Dockerfile 定制镜像
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,从上一篇文章中我们可以了解到,镜像的定制实际上就是定制每一层所添加的配置、文件等信息,但是命令毕竟只是命令,每次定制都得去重复执行这个命令,而且还不够直观,如果我们可以把每一层修改、安装、构建、操作的
千家信息网最后更新 2026年11月01日Dockerfile 定制镜像
从上一篇文章中我们可以了解到,镜像的定制实际上就是定制每一层所添加的配置、文件等信息,但是命令毕竟只是命令,每次定制都得去重复执行这个命令,而且还不够直观,如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么这些问题不就都可以解决了吗?对的,这个脚本就是我们说的Dockerfile
介绍
Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。
这里以定制 tomcat 镜像为例,这次我们使用 Dockerfile 来定制。在一个空白目录中,建立一个文本文件,并命名为 Dockerfile:
[root@192 mydocker]# cat DockerfileFROM jdk:latestADD apache-tomcat-9.0.27.tar.gz /data/softRUN rm -rf apache-tomcat-9.0.27.tar.gzWORKDIR /data/soft/ENTRYPOINT /data/soft/apache-tomcat-9.0.27/bin/startup.sh && tail -f /dev/null[root@192 mydocker]# docker build -t tomcat:test .Sending build context to Docker daemon 500.2MBStep 1/5 : FROM jdk:latest ---> d8252cab0866Step 2/5 : ADD apache-tomcat-9.0.27.tar.gz /data/soft ---> d0f4873733b8Step 3/5 : RUN rm -rf apache-tomcat-9.0.27.tar.gz ---> Running in 7d54b3ccd7caRemoving intermediate container 7d54b3ccd7ca ---> 1f07735cd7daStep 4/5 : WORKDIR /data/soft/ ---> Running in 90dfd42c6134Removing intermediate container 90dfd42c6134 ---> 5704cc83ebb3Step 5/5 : ENTRYPOINT /data/soft/apache-tomcat-9.0.27/bin/startup.sh && tail -f /dev/null ---> Running in 5dd6eef5777eRemoving intermediate container 5dd6eef5777e ---> d97a77aa1533Successfully built d97a77aa1533Successfully tagged tomcat:test[root@192 mydocker]# docker run --name webserver -d -p 8080:8080 tomcat:test /bin/bashe13e5b4d7807b5dbeec0eb55192602ed60cb289b95d82a455cdb340581aba150[root@192 mydocker]# netstat -lntpActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program nametcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1093/sshdtcp6 0 0 :::8080 :::* LISTEN 48659/docker-proxytcp6 0 0 :::22 :::* LISTEN 1093/sshd通过浏览器访问

常用指令

注意问题
COPY ADD 使用问题会设计到权限的问题如何解决权限
可以使用 COPY --chown= 或者 ADD --chown= 去解决
在使用过程中 如ADD使用了.tar.gz自动解压的功能,build执行后,包里面的权限是不会变化的。然后COPY 直接使用权限会直接更改为root。USER的使用,影响哪些使用
影响后面的RUN CMD ENTRYPOINT 命令的执行身份,注意的是 而COPY命令却不服从- WORKDIR的使用
切换目录
一个事例
RUN cd /test
RUN echo "test" >test.txt
请问最后镜像有/test/test.txt吗? 答:NO
解释:docker里边有层的概念,每个命令都是生成一个层,每个层都是独立的空间。所以第二个RUN时,工作目录并不会切换到/test下面 。
最后用一张图解释常用指令的意义^-^
命令
指令
镜像
权限
问题
就是
文件
目录
脚本
常用
文本
切换
影响
解释
直观
不够
事例
信息
内容
功能
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
深圳市人人互联网科技有限公司
博彦科技互联网金融
互联网属科技
鸠鸠互联网科技
互联网络科技有限公司
金融科技与互联网金融
华宇互联网科技
喔噻互联网科技
互联网金融科技平台
唐信互联网科技 大连
互联网 新科技
联恩商钥互联网科技有限公司
互联网和高科技公司
深圳国际航运科技和互联网
广州百诚互联网科技有限公司官网
互联网科技包装股
上海万顺科技互联网有限公司招聘
美国五大互联网科技公司市值多少
10位科技互联网大佬
东风日产互联网科技公司叫什么
上海睿民互联网科技有限公司
重生之互联网科技帝国
互联网最新的科技有限公司
联恩商钥互联网科技有限公司
成都仁贤领冠互联网科技有限公司
富国互联网科技创新基金
如何创新互联网科技
卡尔迅互联网科技有限公司
互联网科技机房
恒生科技指数 中概互联网