DockerFile 镜像打包全流程详解+例子
创作时间:
作者:
@小白创作中心
DockerFile 镜像打包全流程详解+例子
引用
CSDN
1.
https://blog.csdn.net/qq_38304320/article/details/120812153
Dockerfile是用于构建Docker镜像的脚本文件,通过定义一系列的指令来自动化构建过程。本文将详细介绍Dockerfile的基础知识、常用指令以及完整的镜像打包流程,并通过实际例子帮助读者掌握Dockerfile的使用方法。
Dockerfile基础知识
Dockerfile是一个文本文件,包含了构建Docker镜像所需的所有命令和参数。以下是Dockerfile的一些基本规则:
- 每个保留关键字(指令)都必须是大写字母
- 指令从上到下顺序执行
#表示注释- 每个指令都会创建一个新的镜像层并提交
Dockerfile指令详解
示例1:创建一个带有vim和ifconfig的CentOS镜像
官方的CentOS镜像默认不包含vim和ifconfig命令,我们可以通过以下Dockerfile来创建一个包含这些工具的镜像:
FROM centos
MAINTAINER ldj<666@qq.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo "----end------"
CMD /bin/bash
构建镜像的命令如下:
docker build -f /root/ldj/docker-file/dockerfile2-centos -t ldj-centos:1.0 .
示例2:CMD和ENTRYPOINT的区别
CMD和ENTRYPOINT都是用于指定容器启动时运行的命令,但它们的行为有所不同:
- CMD:只有最后一个会生效,可以被替代
- ENTRYPOINT:不会被替代,可以追加命令
CMD命令演示
Dockerfile内容:
FROM centos
CMD ["ls","-a"]
运行命令:
docker run eee738131140 -l
这将导致错误,因为-l替换了CMD中的命令。正确的做法是:
docker run eee738131140 ls -h /root
ENTRYPOINT命令演示
Dockerfile内容:
FROM centos
ENTRYPOINT ["ls","-a"]
运行命令:
docker run bf83f4af585c
docker run bf83f4af585c -h
ENTRYPOINT不会被覆盖,可以追加命令。
示例3:创建一个Tomcat镜像
这是一个更复杂的示例,展示了如何创建一个包含JDK和Tomcat的镜像:
Dockerfile内容:
FROM centos
MAINTAINER ldj<666@qq.com>
COPY readme.txt /usr/local/readme.txt
ADD jdk-17_linux-x64_bin.tar.gz /usr/local
ADD apache-tomcat-9.0.54.tar.gz /usr/local
RUN yum -y install vim
ENV MYPATH /usr/local
WORKDIR $MYPATH
ENV JAVA_HOME /usr/local/jdk-17
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.54
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.54
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-9.0.54/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.54/bin/logs/catalina.out
构建镜像:
docker build -t diytomcat .
启动镜像:
docker run -d -p 8088:8080 --name ldjtomcat -v /root/ldj/tomcat/test:/usr/local/apache-tomcat-9.0.54/webapps/test -v /root/ldj/tomcat/tomcatlogs/:/usr/local/apache-tomcat-9.0.54/logs diytomcat
发布镜像:
- 注册Docker Hub账号
- 登录Docker Hub
docker login --help
- 标记并推送镜像
docker tag 10ed4ccc76de ldj/centos:1.0
docker push ldj/centos:1.0
热门推荐
公文出错事非小,这些公文写作的常见错误,你中过招吗?
放屁的生理机制与饮食生活习惯的关系探讨与健康建议
如何带好制造业团队工作
制造业产品经理必修课:产品数据管理系统(PDM)深度解析
自我探索-兴趣(课件)
生死瞬间!掌握AED知识,每一秒都在为生命续航
庐山诗韵,从古至今的自然画卷与心灵共鸣
三把锁指标公式的信号原理、应用方法及源码详解
几何学简史——影响几何学发展的那些重要思想
家长如何帮助孩子提高剑桥少儿英语成绩?
三国演义配音搞笑版:从声音视角领略历史传奇
视觉检测技术在工业自动化中的缺陷检测与分类
雨天交通事故案例分析与预防指南
三拗片能和藿香正气胶囊一起吃吗?感冒与流感常用中成药使用方法
乡村风光的诗意呈现与变迁反思——简评刘诚龙散文集《我自乡野来》
三角洲行动航天基地攻略:高风险高回报的地图全解析
江苏镇江:二十年的坚守 让英烈精神代代传承
【读书日】 坚韧不拔的英雄群体 激情澎湃的战斗故事
健康从“齿”开始!关于窝沟封闭的知识,一次性讲清楚!
长期停放的车辆需要怎样保养
闪烁的骷髅鸟头纹身图案
中国历史国之重器“传国玉玺”,到底在哪里?至今仍是迷雾重重!
男士脱发是什么原因引起的?M型能治好吗
从石头蹦出来的4个人,他们个个法力无边,孙悟空居然是最差的?
药品刚过期几天,能将就吃吗?药品有效期等于使用期吗?
“央行的央行”警告:欧美政府债务风险是全球经济的最大威胁
想要好睡眠?选择合适床垫的关键就在这里!
视觉符号专题知识
广东工业大学2025年招生简章(含招生计划、录取分数线)
未签订劳动合同,如何保障快递员合法劳动权益?