Skip to content Skip to footer

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

@toc

二、高级篇(大厂进阶)2.DockerFile解析2.1 是什么问题:DockerFile是什么?

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

概述官网

https://docs.docker.com/engine/reference/builder/ 构建三步骤

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的下载镜像地址,官网下载地址:https://www.oracle.com/java/technologies/downloads/#java8

其他下载地址:https://mirrors.yangxingzhen.com/jdk/

注意点2:

执行命令创建目录:mkdir /myfile -> 进入 /myfile目录 -> 准备编写Dockerfile文件,执行命令:vim Dockerfile -> 大写字母D

代码语言:java复制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 .

代码语言:java复制docker build -t centosjava8:1.5 .注意点4:

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

答案:尚硅谷视频安装的是Centos7环境,而你看红框显示Cnetos8进行下载,明显版本不匹配。

视频原配置为FROM centos

所以需要配置版本号Dockerfile的from命令为FROM centos:7,注意后面有版本号,而视频源代码为FROM centos。

详情请看其他人博客:https://blog.csdn.net/weixin_45630258/article/details/124361367?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166011738116781790737138%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=166011738116781790737138&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~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

代码语言:java复制 docker run -it centosjava8:1.5 /bin/bash注意点6:

再体会下UnionFS(联合文件系统)

2.4.2 虚悬镜像注意点1:

问题:虚悬镜像是什么?

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

注意点2:

Dockerfile写一个虚悬镜像

代码语言:java复制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集群