Dockerfile 定制镜像
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,从上一篇文章中我们可以了解到,镜像的定制实际上就是定制每一层所添加的配置、文件等信息,但是命令毕竟只是命令,每次定制都得去重复执行这个命令,而且还不够直观,如果我们可以把每一层修改、安装、构建、操作的
千家信息网最后更新 2025年12月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安全错误
数据库的锁怎样保障安全
江西java软件开发服务
新吴区软件开发工具怎么用
包河区企业网络技术
软件开发部门组织架构
缺乏网络技术支撑
德兴网络安全检查网站
网络安全四个早
服务器服务是开机启动
小米服务器安全
基层网络安全团课
临床试验数据库说明性文件
网络运营者应当按照网络安全事件
焦点科技+互联网保险
国家网络安全基础知识考试题
网络安全意识培训简介
数据库管理系统体系结构
教学系统的软件开发
短信服务器接口
威海+软件开发工程师
西安住宿软件开发
提高金融网络安全
深度学习与数据库联系
联想服务器t260怎么u盘启动
导致服务器会有短时间的卡顿
服务器虚拟机搭建
泸州软件开发公司招聘信息
法半夏枇杷膏药品广告数据库
电脑文件服务器
大国网络安全博弈包含什么
大华服务器网页怎么调中文