Dockerfile学习小结
Dockerfile 是用来构建docker镜像的文件,是类似于shell的命令参数脚本
构建步骤
- 编写dockerfile文件
- docker build 构建成为一个镜像
- docker run 运行镜像
- docker push 发布镜像(DockerHub、阿里云镜像仓库
DockerFile指令
FROM # 指定基础镜像
MAINTAINER # 指定维护者信息
RUN # 镜像构建时候需要运行的命令
ADD # 在基础镜像上添加环境、例如tomcat...
WORKDIR # 设置镜像的工作目录
VOLUME # 设置挂载卷,挂载主机目录
EXPOSE # 指定对外端口
CMD # 指定容器启动时候运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT # 指定容器启动时候运行的命令,可直接追加命令
ONBUILD # 当构建一个被继承DockerFile 这个时候会触发ONBUILD的指令
COPY # 将我们的文件拷贝到镜像中
ENV # 构建的时候设置环境变量
实战测试
DockerHub中99%镜像都是从scratch基础镜像开始的,然后配置需要的软件和配置来进行构建
创建一个自己的centos
FROM centos:centos7
MAINTAINER teanxo<483586199@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
查看构建过程
docker history 镜像ID
# 实例
docker history 4d7e972097b0
IMAGE CREATED CREATED BY SIZE COMMENT
4d7e972097b0 13 minutes ago CMD ["/bin/sh" "-c" "/bin/bash"] 0B buildkit.dockerfile.v0
<missing> 13 minutes ago CMD ["/bin/sh" "-c" "echo \"---end---\""] 0B buildkit.dockerfile.v0
<missing> 13 minutes ago CMD ["/bin/sh" "-c" "echo ${MYPATH}"] 0B buildkit.dockerfile.v0
<missing> 13 minutes ago EXPOSE map[80/tcp:{}] 0B buildkit.dockerfile.v0
<missing> 13 minutes ago RUN /bin/sh -c yum -y install net-tools # bu… 144MB buildkit.dockerfile.v0
<missing> 13 minutes ago RUN /bin/sh -c yum -y install vim # buildkit 221MB buildkit.dockerfile.v0
<missing> 13 minutes ago WORKDIR /usr/local 0B buildkit.dockerfile.v0
<missing> 13 minutes ago ENV MYPATH=/usr/local 0B buildkit.dockerfile.v0
<missing> 13 minutes ago MAINTAINER teanxo<483586199@qq.com> 0B buildkit.dockerfile.v0
<missing> 6 months ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
<missing> 6 months ago /bin/sh -c #(nop) LABEL org.label-schema.sc… 0B
<missing> 6 months ago /bin/sh -c #(nop) ADD file:b3ebbe8bd304723d4… 204MB
实战二 搭建tomcat
FROM centos:centos7
MAINTAINER teanxo<483586199@qq.com>
# 复制文件到容器内
COPY readme.txt /usr/local/readme.txt
# 添加JDK环境(添加tar.gz文件,自动解压)
ADD jdk-8u321-linux-x64.tar.gz /usr/local
ADD apache-tomcat-9.0.62.tar.gz /usr/local
# 安装额外依赖
RUN yum -y install vim
# 配置工作目录
ENV MYPATH=/usr/local
WORKDIR ${MYPATH}
# 配置环境变量
ENV JAVA_HOME=/usr/local/jdk1.8.0_321
ENV CATALINA_HOME=/usr/local/apache-tomcat-9.0.62
ENV CATALINA_BASE=/usr/local/apache-tomcat-9.0.62
ENV PATH=${PATH}:${JAVA_HOME}/bin
# 暴露端口
EXPOSE 8080
# CMD /bin/bash
CMD /usr/local/apache-tomcat-9.0.62/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.62/bin/logs/catalina.out

浙公网安备 33010602011771号