2022-05-25
运维
00
请注意,本文编写于 968 天前,最后修改于 242 天前,其中某些信息可能已经过时。

目录

DockerFile
DockerFile介绍
DockerFile构建过程
DockerFile构建指令
实战测试(制作centos:7镜像)
实战测试(制作Tomcat镜像)
发布镜像到阿里云
小结

DockerFile介绍

DockerFile

DockerFile介绍

dockerfile是用来构建dokcer镜像的文件!命令参数脚本! 构建步骤:

  1. 编写一个dockerfile 文件
  2. docker build 构建成为一个镜像
  3. docker run运行镜像
  4. docker push 发布镜像(DockerHub、阿里云镜像仓库!)

查看一下官方是怎么做的?

pasted-9.png

DockerFile构建过程

基础知识

  1. 每个保留关键字(指令)都是必须是大写字母
  2. 执行从上到下顺序执行
  3. #表示注释
  4. 每一个指令都会创建提交一个新的镜像层,并提交!

pasted-4.png

dockerfile是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile文件,这个文件十分简单!
Docker镜像逐渐成为企业交付的标准,必须要掌握!
步骤:开发,部署,运维。。。缺一不可!
DockerFile:构建文件,定义了一切的步骤,源代码
Dockerlmages:通过 DockerFile 构建生成的镜像,最终发布和运行的产品!
Docker容器:容器就是镜像运行起来提供服务器

DockerFile构建指令

以前的话我们就是使用别人的,现在我们知道了这些指令后,我们来练习自己写一个镜像!

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

pasted-5.png

实战测试(制作centos:7镜像)

制作centos:7镜像

#begin 创建dockerFile文件 FROM centos:7 MAINTAINER chenshaohua<1050449218@qq.com> ENV MYPATH /usr/local WORKDIR $MYPATH RUN yum -y install vim RUN yum -y install net-tools EXPOSE 80 CMD /bin/bash #end #构造新的镜像 docker build -f dockerFile-centos -t mycentos:0.1 . #测试 docker run -it mycentos:0.1 ls ll ifconfig

查看镜像历史记录,看官方怎么构建

docker history 镜像id

RUN命令与CMD命令的区别在哪里? 简单说,RUN命令在 image 文件的构建阶段执行,执行结果都会打包进入 image 文件;CMD命令则是在容器启动后执行。另外,一个 Dockerfile 可以包含多个RUN命令,但是只能有一个CMD命令。

注意,指定了CMD命令以后,docker container run命令就不能附加命令了(比如前面的/bin/bash),否则它会覆盖CMD命令。
CMD和ENTRYPOINT的区别在哪里?

  1. CMD :指定容器启动的时候要运行的命令,只有最后一个会生效
  2. ENTRYPOINT :指定容器启动的时候要运行的命令,命令可以追加

实战测试(制作Tomcat镜像)

1、准备镜像文件apache-tomcat-8.5.78.tar.gz、jdk-8u261-linux-x64.tar.gz压缩包

2、编写dockerFile文件

文件名起 Dockerfile build不用加 -f 指定 官网默认找这个文件

FROM centos:7 MAINTAINER chenshaohua<1050449218@qq.com> COPY readme.txt /usr/local/readme.txt #自动解压 ADD jdk-8u261-linux-x64.tar.gz /usr/local/ ADD apache-tomcat-8.5.78.tar.gz /usr/local/ RUN yum -y install vim #工作目录 ENV MYPATH /usr/local WORKDIR $MYPATH #配置java环境变量 ENV JAVA_HOME /usr/local/jdk1.8.0_261 ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar #配置tomcat环境变量 ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.78 ENV CATALINA_BASH /usr/local/apache-tomcat-8.5.78 ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin #暴露端口 EXPOSE 8080 #执行命令 CMD /usr/local/apache-tomcat-8.5.78/bin/startup.sh && tail -F /usr/local/apache-tomcat-8.5.78/bin/logs/catalina.out

3、构建镜像

[root@MiWiFi-RA81-srv home]# docker build -t diytomcat .

4、启动镜像

docker run -d -p 9090:8080 --name diytomcat -v /home/dockerfile/tomcat/test:/usr/local/apache-tomcat-8.5.78/webapps/test -v /home/dockerfile/tomcat/logs/:/usr/local/apache-tomcat-8.5.78/logs diytomcat

5、访问测试

http://192.168.1.126:9090/

6、发布项目
这里设置了数据卷,宿主机的/home/dockerfile/tomcat/test对应该容器的/usr/local/apache-tomcat-8.5.55/webapps/test。这样关于test项目的修复只需要在宿主机上修改就可以了,不需要进入到容器中修改。

#在/home/dockerfile/tomcat/test的目录下,新建index.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"/> <title>这是个标题</title> </head> <body> <h1>这是一个一个简单的HTML</h1> <p>Hello World!</p> </body> </html> #测试 http://192.168.1.126:9090/test/ ##如果页面显示乱码,就需要修改tomcat的server.xml文件 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />

发布镜像到阿里云

  1. 登录阿里云,找到容器镜像服务
  2. 创建命名空间
  3. 创建镜像空间(选择本地服务)
  4. 创建镜像空间阿里云有操作指南

小结

""

本文作者:酷少少

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!