Dockerfile学习小结

Dockerfile 是用来构建docker镜像的文件,是类似于shell的命令参数脚本

构建步骤

  1. 编写dockerfile文件
  2. docker build 构建成为一个镜像
  3. docker run 运行镜像
  4. 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
posted @ 2022-04-12 10:35  teanxo  阅读(79)  评论(0)    收藏  举报