Dockerfile 定制镜像
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,从上一篇文章中我们可以了解到,镜像的定制实际上就是定制每一层所添加的配置、文件等信息,但是命令毕竟只是命令,每次定制都得去重复执行这个命令,而且还不够直观,如果我们可以把每一层修改、安装、构建、操作的
千家信息网最后更新 2025年01月23日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安全错误
数据库的锁怎样保障安全
手狼服务器
saas模式软件开发商
警察网络安全知识宣传
韩服新服务器玩法
广州快律网络技术有限公司
电脑网络技术分析数据
cisco日志服务器软件
晨曦数据库引擎需要补丁
财务网络安全征文
云服务器需要病毒防护吗
上海网络安全工程师薪酬
车辆管理系统服务器
数据库bak文件还原
我的世界地址服务器
天翼服务器系统
计算机网络技术教程考试试题
pubchem数据库查靶点
护苗安网络安全课
命运而服务器离线什么意思
软件开发加话
芯片架构和软件开发语言的关系
重庆医疗健康软件开发
网络安全必须要知道的几个知识
北京计算机应用软件开发怎么样
上海网络安全工程师薪酬
计算机网络安全搭建
db2数据库管理追踪操作历史
企业邮箱接收邮件服务器
arm软件开发的流程
腾讯内部 调取微信数据库