docker使用dockfile 写错了 Dockerfile中ENTRYPOINT设置的命令 可以动态覆盖

本文主要是介绍docker使用dockfile 写错了 Dockerfile中ENTRYPOINT设置的命令 可以动态覆盖,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 docker run的--entrypoint可以覆盖Dockerfile中ENTRYPOINT设置的命令

 

docker run -it -p20180:80   -p20181:8080  -p20182:8976  --entrypoint="/bin/bash" --name containerName image:tag

 

docker commit -a ‘songlk’ -m ‘commitdesc’ container_nginx centos:7.2.1511

https://blog.csdn.net/yori_chen/article/details/80930075

 

 

环境为CentOS,在制作镜像之前,请先下载好Linux版的JDK和Tomcat,我所演示的版本为:jdk-8u162-linux-x64.tar.gzapache-tomcat-8.0.47.tar.gz

  • 保证JDK、Tomcat、Dockerfile 处于同一目录下(本次演示目录为:/home)
[root@iZbp1b5k5bjps0dw8owk7tZ home]# ls
apache-tomcat-8.0.47.tar.gz  Dockerfile  jdk-8u162-linux-x64.tar.gz
[root@iZbp1b5k5bjps0dw8owk7tZ home]# 
  • 1
  • 2
  • 3
  • 4

编写docker构建文件(Dockerfile)

# 编辑Dockerfile
vi Dockerfile
  • 1
  • 2

不知道什么是Dockerfile? 也不会写?,OK,Ctrl+C 就好了,不过请将jdk和tomcat的版本和版本后面对应的路径改为自己指定的版本和路径

# 基础镜像
FROM centos
# 作者
MAINTAINER  yezi
# 把jdk与tomcat添加到容器中
ADD jdk-8u162-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-8.0.47.tar.gz /usr/local/
# 配置环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_162
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.0.47
ENV CATALINA_BASE /usr/local/apache-tomcat-8.0.47
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
# 容器运行时监听的端口
EXPOSE 8080
#配置容器启动后执行的命令
ENTRYPOINT /usr/local/apache-tomcat-8.0.47/bin/startup.sh && tail -f /usr/local/apache-tomcat-8.0.47/logs/catalina.out
#启动时运行tomcat
CMD ["/usr/local/apache-tomcat-8.0.47/bin/catalina.sh","run"]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • ENTRYPOINT这个命令主要是为了解决tomcat容器不打印catalina.out日志,可以省去

构建镜像

# 以当前目录下(.)的 Dockerfile 文件 构建镜像名为 yezi/tomcat 的镜像
docker build -t yezi/tomcat .
  • 1
  • 2
[root@iZbp1b5k5bjps0dw8owk7tZ test]# docker build -t yezi/tomcat .
Sending build context to Docker daemon  199.2MB
Step 1/11 : FROM centos---> 49f7960eb7e4
Step 2/11 : MAINTAINER  yezi---> Running in 23ab370a223c
Removing intermediate container 23ab370a223c---> eb683d133105
Step 3/11 : ADD jdk-8u162-linux-x64.tar.gz /usr/local/---> cf74a462ef4a
Step 4/11 : ADD apache-tomcat-8.0.47.tar.gz /usr/local/---> 50e1b915e404
Step 5/11 : ENV JAVA_HOME /usr/local/jdk1.8.0_162---> Running in 62651c01180d
Removing intermediate container 62651c01180d---> 0f440b8fb05c
Step 6/11 : ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar---> Running in e7b22ff3daae
Removing intermediate container e7b22ff3daae---> 1d7561a73619
Step 7/11 : ENV CATALINA_HOME /usr/local/apache-tomcat-8.0.47---> Running in 10d6926828af
Removing intermediate container 10d6926828af---> 7ee45ddd1cac
Step 8/11 : ENV CATALINA_BASE /usr/local/apache-tomcat-8.0.47---> Running in 6dc85ca63503
Removing intermediate container 6dc85ca63503---> 9ccb74f42ac8
Step 9/11 : ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin---> Running in 95f3447c1345
Removing intermediate container 95f3447c1345---> afa972c0579f
Step 10/11 : EXPOSE 8080---> Running in 8ec9bc003730
Removing intermediate container 8ec9bc003730---> 0d64ccb2b12e
Step 11/11 : CMD ["/usr/local/apache-tomcat-8.0.47/bin/catalina.sh","run"]---> Running in 60877645aadd
Removing intermediate container 60877645aadd---> ed785fcf2d5f
Successfully built ed785fcf2d5f
Successfully tagged yezi/tomcat:latest
[root@iZbp1b5k5bjps0dw8owk7tZ test]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

查看构建的镜像

[root@iZbp1b5k5bjps0dw8owk7tZ home]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
yezi/tomcat         latest              ed785fcf2d5f        About an hour ago   598MB
tomcat              latest              2d084b11164d        31 hours ago        463MB
centos              latest              49f7960eb7e4        4 weeks ago         200MB
[root@iZbp1b5k5bjps0dw8owk7tZ home]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

启动镜像

docker run -d -p 8080:8080 yezi/tomcat

这篇关于docker使用dockfile 写错了 Dockerfile中ENTRYPOINT设置的命令 可以动态覆盖的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/658407

相关文章

SpringBoot中使用Flux实现流式返回的方法小结

《SpringBoot中使用Flux实现流式返回的方法小结》文章介绍流式返回(StreamingResponse)在SpringBoot中通过Flux实现,优势包括提升用户体验、降低内存消耗、支持长连... 目录背景流式返回的核心概念与优势1. 提升用户体验2. 降低内存消耗3. 支持长连接与实时通信在Sp

python使用库爬取m3u8文件的示例

《python使用库爬取m3u8文件的示例》本文主要介绍了python使用库爬取m3u8文件的示例,可以使用requests、m3u8、ffmpeg等库,实现获取、解析、下载视频片段并合并等步骤,具有... 目录一、准备工作二、获取m3u8文件内容三、解析m3u8文件四、下载视频片段五、合并视频片段六、错误

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

PostgreSQL 默认隔离级别的设置

《PostgreSQL默认隔离级别的设置》PostgreSQL的默认事务隔离级别是读已提交,这是其事务处理系统的基础行为模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一 默认隔离级别概述1.1 默认设置1.2 各版本一致性二 读已提交的特性2.1 行为特征2.2

Windows下C++使用SQLitede的操作过程

《Windows下C++使用SQLitede的操作过程》本文介绍了Windows下C++使用SQLite的安装配置、CppSQLite库封装优势、核心功能(如数据库连接、事务管理)、跨平台支持及性能优... 目录Windows下C++使用SQLite1、安装2、代码示例CppSQLite:C++轻松操作SQ

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2