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
热门推荐
尊界测试惹争议,迈巴赫车主权益谁来护?
什么是社保基数?
挪用资金罪数额巨大:典型案例与法律适用分析
盘点日本留学专升研主要途径
验孕棒什么时候测最准确?验孕棒测试时机全解析!
崔永元的坚持与挑战:社会不同声音的缩影与未来展望
野山参还是红参?适合自己的才是最好的参
汕头大学医学院附属肿瘤医院:粤东地区唯一三甲肿瘤专科医院
三种经典蘸酱制作方法详解:麻辣、麻酱、蒜蓉香油
香气四溢的家常糯米鸡,美味滋补,温暖心灵
益生菌与益菌生能取代酵素吗?探讨肠道健康的三大关键
随机OD矩阵预测:基于双阶段图卷积循环神经网络的研究
合同可变更可撤销的条件有哪些
Keil项目管理器不见了怎么办?六步帮你轻松找回
劳宫穴的位置和功效与作用
水性乳胶漆有甲醛吗?一文详解其环保安全性
科学高效清除家中甲醛:通风、活性炭、净化器、多管齐下保障健康
2024年中欧班列运营报告:西安开行量仍高居榜首,成渝携手发挥“1+1>2”效应
雪碧热量:影响因素及健康饮用指南
手刮破了出血怎么处理
固态硬盘的使用寿命是多久?如何计算SSD的擦写寿命?
清朝武士为何反戴腰刀?从军事实用到文化象征的独特佩刀方式
清朝武士为何反戴腰刀?从军事实用到文化符号的演变
深圳自驾游完全攻略:必去景点与最佳路线推荐
豆浆黑咖啡能一起喝吗?营养科医生的专业解答
2024年青少年STEAM教育研究报告
【他山之石】淮阴师范学院:协同攻关 服务区域高质量发展新需求
制作美味鱼籽蛋饼的秘诀:简单步骤打造营养早餐
学生意外受伤怎么办?教师妥善应对的“六一”原则
老年人跌倒是大事,预防和救护措施分享给您