- 1. 步 骤
- 2. Dockerfile常用构建指令
- 3. Dockerfile构建实战
- 3.1 基础规则
- 3.2 构建CentOS镜像
- 3.3 构建Tomcat镜像(Tomcat8+Jdk8)
- 3.3.1 构建过程
- 3.3.2 测试镜像
- 编写一个dockerfile文件
- docker build构建成为一个镜像
- docker run 运行镜像,创建容器
- docker push 发布镜像(可以发布到DockerHub、阿里云镜像仓库)或者发送镜像给他人使用
FROM # 基础镜像,一切从这里开始构建 MAINTAINER # 指定维护者信息,告诉他人,镜像是谁写的,姓名+邮箱 RUN # 镜像构建的时候需要运行的命令 ADD # 在基础镜像上添加其它镜像,这里加压缩包即可,会自动解压 WORKDIR # 设置镜像的工作目录 VOLUME # 设置挂载的目录 EXPOSE # 端口配置,类似-p设置端口 CMD # 指定容器启动的时候要运行的命令,当使用多个CMD指定要运行的命令时,只有最后一个CMD会生效,可被替代 ENTRYPOINT # 指定容器启动的时候要运行的命令,可以追加命令 onBUILD # 当构建一个被继承dockerfile时,会自动运行ONBUILD指令,这是个触发指令,了解即可 COPY # 将文件拷贝到镜像中 ENV # 构建的时候,设置环境变量 # 其它命令,可以百度dockerfile指令进行了解3. Dockerfile构建实战 3.1 基础规则
- 每个保留关键字(指令)都必须是大写字母
- 执行顺序是从上到下
- #号表示注释
- 每个指令都会创建提交一个新的镜像层,并提交
- Docker Hub中99%的镜像都是从基础镜像(即FROM scratch)开始的,然后添加需要的软件和配置进行搭建
(1)编写dockerfile文件
# 1、单独新建一个目录 mkdir -p /home/dockerfile # 2、在前面的目录中新建一个dockerfile文件,文件名为centos-dockerfile vim centos-dockerfile # 3、查看写的文件内容 cat centos-dockerfile # 以下为文件内容 FROM centos MAINTAINER yuhuofei2021<*****@qq.com> 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
(2)docker build构建镜像
# build前面写的文件 docker build -f /home/dockerfile/centos-dockerfile -t mycentos:0.1 .
(3)运行镜像,创建容器
# 运行命令 docker run -it mycentos:0.1
查看镜像构建过程
docker history c34fea37377b3.3 构建Tomcat镜像(Tomcat8+Jdk8) 3.3.1 构建过程
目标:基于CentOS纯净版,构建一个Tomcat镜像(tomcat8+jdk8)。
总体步骤:
- 准备镜像文件,tomcat8压缩包、jdk8压缩包
- 编写dockerfile文件
编写dockerfile详细步骤:
# 1、新建目录存放doukerfile文件 mkdir /usr/local/diy-tomcat-image # 2、在diy-tomcat-image中新建一个readme.txt,可以里面写下说明,同时将tomcat8、jdk8的压缩包放到这个目录中 touch readme.txt # 3、新建Doukerfile(官方命名) vim Dockerfile # 文件内容 FROM centos MAINTAINER yuhuofei2021<*****@qq.com> COPY readme.txt /usr/local/diy-tomcat-image/readme.txt ADD jdk-8u144-linux-x64.tar.gz /usr/local/diy-tomcat-image/ ADD apache-tomcat-8.5.71.tar.gz /usr/local/diy-tomcat-image/ RUN yum -y install vim ENV MYPATH /usr/local/diy-tomcat-image WORKDIR $MYPATH ENV JAVA_HOME /usr/local/diy-tomcat-image/jdk1.8.0_144 ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ENV CATALINA_HOME /usr/local/diy-tomcat-image/apache-tomcat-8.5.71 ENV CATALINA_BASH /usr/local/diy-tomcat-image/apache-tomcat-8.5.71 ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin EXPOSE 8080 CMD /usr/local/diy-tomcat-image/apache-tomcat-8.5.71/bin/startup.sh && tail -F /usr/local/diy-tomcat-image/apache-tomcat-8.5.71/bin/logs/catalina.out # 4、docker build创建镜像,镜像名diy-tomcat-image docker build -t diy-tomcat-image .
至此,我们的Tomcat镜像(Tomcat8+Jdk8)构建完成!
(1)运行镜像,创建容器并挂载目录
docker run -d -p 8088:8080 --name yuhuofei2021-tomcat -v /usr/local/diy-tomcat-image/test:/usr/local/diy-tomcat-image/apache-tomcat-8.5.71/webapps/test -v /usr/local/diy-tomcat-image/diytomcatlogs:/usr/local/diy-tomcat-image/apache-tomcat-8.5.71/logs diy-tomcat-image
(2)查看挂载目录
随着容器的创建并启动,发现宿主机的日志目录diytomcatlogs中,已经产生日志文件。
再查看对应容器的日志目录中的文件,可以发现二者是一致的。
(3)访问ip+端口(http://192.168.125.128:8088)
(4)发布项目
# 1、在宿主机的/usr/local/diy-tomcat-image/test中,新建一个目录WEB-INF mkdir WEB-INF # 2、在WEB-INF目录中新建一个web.xml文件 vim web.xml # 文件内容如下# 3、在WEB-INF目录中再新建一个index.jsp文件 vim index.jsp #文件内容如下 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Docker发布项目测试 Hello World!
<% System.out.println("这是一个web项目!"); %> # 4、关闭tomcat容器,然后再重启,接着在浏览器输入地址测试(http://192.168.125.128:8088/test/) docker stop aa63aa394409 docker start aa63aa394409
发布项目测试结果如下:
catalina.out中的日志信息如下(未处理中文乱码):



