《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结

161 阅读4分钟
                                                                                                                                ![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/fb35cbd777b6e0ef3d7c3a8745f76bb3.jpeg#pic_center)

@[toc]

二、高级篇(大厂进阶)

2.DockerFile解析

在这里插入图片描述

2.1 是什么

在这里插入图片描述

问题:DockerFile是什么?

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

  • 概述 在这里插入图片描述

  • 官网 docs.docker.com/engine/refe…

  • 构建三步骤 1)编写Dockerfile文件 2)docker build命令构建镜像 3)docker run依镜像运行容器实例

2.2 DockerFile构建过程解析

在这里插入图片描述

  • Docker执行Dockerfile的大致流程 (1)docker从基础镜像运行一个容器 (2)执行一条指令并对容器作出修改 (3)执行类似docker commit的操作提交一个新的镜像层 (4)docker再基于刚提交的镜像运行一个新容器 (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

注意点1: JDK的下载镜像地址,官网下载地址:www.oracle.com/java/techno…

在这里插入图片描述 其他下载地址:mirrors.yangxingzhen.com/jdk/ 在这里插入图片描述

注意点2: 执行命令创建目录:mkdir /myfile -> 进入 /myfile目录 -> 准备编写Dockerfile文件执行命令vim Dockerfile -> 大写字母D 在这里插入图片描述

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 新镜像名字:TAG .

docker build -t centosjava8:1.5 .

在这里插入图片描述 在这里插入图片描述 注意点4:

问题:执行命令:docker build -t centosjava8:1.5 .可能会报错如图?

在这里插入图片描述 答案:尚硅谷视频安装的是Centos7环境,而你看红框显示Cnetos8进行下载,明显版本不匹配。 视频原配置为FROM centos 所以需要配置版本号Dockerfile的from命令为FROM centos:7,注意后面有版本号,而视频源代码为FROM centos。

详情请看其他人博客:blog.csdn.net/weixin_4563…allsobaiduend~default-1-124361367-null-null.142^v40^pc_rank_34_ctr0,185^v2^control&utm_term=The%20command%20%2Fbin%2Fsh%20-c%20yum%20-y%20install%20vim%20returned%20a%20non-zero%20code%3A%201&spm=1018.2226.3001.4187

注意点5: 运行命令docker run -it 新镜像名字:TAG

 docker run -it centosjava8:1.5 /bin/bash

在这里插入图片描述 注意点6: 再体会下UnionFS(联合文件系统) 在这里插入图片描述

2.4.2 虚悬镜像

在这里插入图片描述 注意点1:

问题:虚悬镜像是什么?

答案:仓库名、标签都是的镜像,俗称dangling image

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

1 vim Dockerfile
from ubuntu
CMD echo 'action is success'

2 docker build .

在这里插入图片描述 注意点3: 虚悬镜像查看命令docker image ls -f dangling=true 命令结果 在这里插入图片描述 注意点4: 虚悬镜像删除命令docker image prune 在这里插入图片描述

2.5 小总结

在这里插入图片描述

本人其他相关文章链接

1.《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群 2.《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结 3.《docker高级篇(大厂进阶):3.Docker微服务实战》 4.《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解 5.《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务 6.《docker高级篇(大厂进阶):6.Docker轻量级可视化工具Portainer》 7.《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走 8.docker基础篇:安装tomcat 9.docker基础篇:安装mysql单机版 10.docker基础篇:安装redis单机版 11.docker高级篇(大厂进阶):安装mysql主从复制 12.docker高级篇(大厂进阶):安装redis集群

image.png

重要信息

image.png