Docker深入理解(二)

513 阅读4分钟

这是我参与11月更文挑战的第23天,活动详情查看:2021最后一次更文挑战

Docker 深入学习

1, Dockerfile初识

Dockerfile 就是用来构建docker镜像的构建文件!

通过这个脚本可以生成镜像,镜像是一层一层的,脚本一个个的命令,每个命令都是一层。

1, 创建一个dockerfile文件

# 创建一个dockerfile文件, 下面是文件内容
# 指令中的内容都是大写

FROM centos
VOLUME ["volume01", "volume02"]

CMD echo "----end------"

CMD /bin/bash

2, 编译执行这个文件

docker build -f /root/docker-test-volume/dockerfile1 -t zlm/centos:1.0 .

3, 创建截图

1637600513748.png

4, 编译截图

1637600567791.png

5, 查看我们自己镜像截图

1637600623121.png

6, 启动我们自己的镜像截图

1637600759314.png

总结:DockerFile构建步骤: 1, 编写一个dockerfile文件

2,docker build 构建成为一个镜像

3,docker run 运行镜像

4, docker push 发布镜像

2, DockerFile构建过程

1, 每个保留关键字(指令)都必须是大写字母

2, 执行从上到下顺序执行

3, # 表示注释

4, 每一个指令都会创建提交一个新的镜像层,并提交

注意:dockerfile是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile文件,这个文件十分简单, Docker镜像慢慢成为企业交付的标准,必须要掌握。

DockerFile:构建文件, 定义了一切的步骤,源diam

DockerImages: 通过DockerFile构建生成的镜像,最终发布和运行的产品

Docker容器:容器就是镜像运行起来提供服务器

3, DockerFIle的指令

1637602332991.png

FROM        # 基础镜像,一切从这里开始构建
MAINTAINER  # 镜像是谁写的,姓名+邮箱
RUN         # 镜像构建的时候需要运行的命令
ADD         # 步骤:tomcat镜像,这个tomcat压缩包,添加内容
WORKDIR     # 镜像的工作目录
VOLUME      # 挂载的目录
EXPOST      # 保留端口配置
CMD         # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT  # 指定这个容器启动的时候要远行的命令,可以追加命令
ONBUILD     # 当构建一个被继承DockerFile, 这个时候会运行ONBUILD的指令,触发指令
COPY        # 类似ADD, 将我们文件拷贝到镜像中
ENY         # 构建的时候设置环境变量

4, 实战测试-centos

搭建自己的centos镜像,并让其支持vim编辑功能和ifconfig命令

官方地址: hub.docker.com/_/centos?ta…

官方写法:Docker Hub中99%的镜像都是从这个基础镜像过来的 FROM scratch, 然后配置需要的软件和配置来进行构建, 官方给的centos是最简单的版本,不支持vim 和ifconfig这样的命令。

1637673222895.png

1, 创建自己的centos

(1) 创建目录

1637673752431.png

(2)编写 dockerfile文件

FROM centos
MAINTAINER zlm<zlm@pangan.com.cn>

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

(3) 通过这个文件构建镜像

[root@VM-0-7-centos dockerfile]# docker build -f mydockerfile -t mycentos:1.0 .

#构建完成,最后的输出
Successfully built 8c20a601e36c
Successfully tagged mycentos:1.0
[root@VM-0-7-centos dockerfile]# 

1637674247022.png

(4) 运行我们的镜像

docker run -it mycentos:1.0

1637674599740.png

注意: 从截图可以看出,进入我们的镜像之后,直接定位到我们的刚才设置的工作目录下, 并且这个镜像支持vim编辑功能, 和ifconfig命令

(5) 查看一个镜像的构建历史

docker history 镜像ID

1637674784914.png

5, CMD 和 ENTRYPOINT 区别

1, CMD: 指定这个容器启动的时候要运行的命令, 只有最后一个会生效,可悲代替

2,ENTRYPOINT: 指定这个容器启动的时候要运行的命令,可以追加命令

6, 实战测试-tomcat镜像

1, 准备镜像文件 Tomcat压缩包,和JDK压缩包

# 下载 Tomcat/JDK
wget https://mirrors.cnnic.cn/apache/tomcat/tomcat-9/v9.0.55/bin/apache-tomcat-9.0.55.tar.gz 

# 下载JDK
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-
cookie" http://download.oracle.com/otn-pub/java/jdk/8u91-b14/jdk-8u91-linux-x64.tar.gz

1637676838517.png

2, 编写dockerfile文件, 官方命名:Dockerfile,build会自动寻找这个文件,就不需要指定 -f 参数了。

FROM centos
MAINTAINER zlm<2396307772@qq.com>

COPY readme.txt /usr/local/readme.txt

ADD jdk-8u221-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.55.tar.gz /use/local/

RUN yum -y install vim

ENV MYPATH /usr/local
WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_221
ENV CLASSPATH $JAVE_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.55
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.55
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_BASH/bin

EXPOSE 8080

CMD /usr/local/apache-tomcat-9.0.55/bin/startup.sh && tail -F /url/local/apache-tomcat-
9.0.55/bin/logs/catalina.out

3, 构建自己的镜像

docker build -t diytomcat .

4, 启动镜像, 并挂载目录

[root@VM-0-7-centos apache]# docker run -d -p 9090:8080 --name zlmTomcat -v 
/root/apache/test:/url/local/apache-tomcat-9.0.55/webapps/test -v 
/root/apache/logs:/usr/local/apache-tomcat-9.0.55/logs diytomcat

5, 访问测试

6, 发布项目(因为了做了卷挂载,可以在本地直接发布)