这是我参与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, 创建截图
4, 编译截图
5, 查看我们自己镜像截图
6, 启动我们自己的镜像截图
总结: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的指令
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这样的命令。
1, 创建自己的centos
(1) 创建目录
(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]#
(4) 运行我们的镜像
docker run -it mycentos:1.0
注意: 从截图可以看出,进入我们的镜像之后,直接定位到我们的刚才设置的工作目录下, 并且这个镜像支持vim编辑功能, 和ifconfig命令
(5) 查看一个镜像的构建历史
docker history 镜像ID
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
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, 发布项目(因为了做了卷挂载,可以在本地直接发布)