问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Docker高级篇:DockerFile深度解析与实战

创作时间:
作者:
@小白创作中心

Docker高级篇:DockerFile深度解析与实战

引用
1
来源
1.
https://developer.aliyun.com/article/1646527

二、高级篇(大厂进阶)

2.DockerFile解析

2.1 是什么

问题:DockerFile是什么?

答案:Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。

2.2 DockerFile构建过程解析

Docker执行Dockerfile的大致流程:

  1. 从基础镜像运行一个容器
  2. 执行一条指令并对容器作出修改
  3. 执行类似docker commit的操作提交一个新的镜像层
  4. 基于刚提交的镜像运行一个新容器
  5. 执行dockerfile中的下一条指令直到所有指令都执行完成

2.3 DockerFile常用保留字指令

  • 注意点1:ENV指令用来在构建镜像过程中设置环境变量

  • 注意点2:ENTRYPOINT指令用于指定容器启动时要运行的命令格式和案例说明

  • 注意点3:RUN指令有两种格式

  • shell格式

  • exec格式

  • 注意点4:CMD指令用于指定容器启动后的要干的事情

  • 注意点5:小总结

2.4案例

2.4.1自定义镜像mycentosjava8

使用步骤:

  1. 编写Dockerfile文件
  2. 构建:docker build -t 新镜像名字:TAG .
  3. 运行:docker run -it 新镜像名字:TAG
mkdir /myfile
cd /myfile
vim Dockerfile

Dockerfile内容如下:

FROM centos:7
MAINTAINER zzyy
ENV MYPATH /usr/local
WORKDIR $MYPATH
#安装vim编辑器
RUN yum -y install vim
#安装ifconfig命令查看网络IP
RUN yum -y install net-tools
#安装java8及lib库
RUN yum -y install glibc.i686
RUN mkdir /usr/local/java
#ADD 是相对路径jar,把jdk-8u171-linux-x64.tar.gz添加到容器中,安装包必须要和Dockerfile文件在同一位置
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
EXPOSE 80
CMD echo $MYPATH
CMD echo "success--------------ok"
CMD /bin/bash
  • 注意点3:构建命令
docker build -t centosjava8:1.5 .
  • 注意点4:执行命令:docker build -t centosjava8:1.5 .可能会报错,原因是版本不匹配。需要将Dockerfile的from命令配置为
FROM centos:7
  • 注意点5:运行命令
docker run -it centosjava8:1.5 /bin/bash
  • 注意点6:再体会下UnionFS(联合文件系统)

2.4.2 虚悬镜像

  • 注意点1:虚悬镜像是指仓库名、标签都是的镜像,俗称dangling image

  • 注意点2:Dockerfile写一个虚悬镜像

vim Dockerfile
from ubuntu
CMD echo 'action is success'
docker build .
  • 注意点3:虚悬镜像查看命令
docker image ls -f dangling=true
  • 注意点4:虚悬镜像删除命令
docker image prune

2.5 小总结

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号