DockerFile体系构建(保留字指令)

保留字指令

FROM       --基础镜像,当前镜像是基于那个镜像的

MAINTAINER    --镜像维护者的名字和邮件地址

RUN        --容器构建时需要运行的命令

EXPOSE      --当前容器对外暴露的端口

WORKDR       --指定在创建容器后,终端默认登录的进来工作目录,一个落脚点

ENV             --用来构建镜像过程中设置环境变量

ADD        --将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tae压缩包

COPY        --类似ADD,拷贝文件和目录到镜像。将从构建上下文目录<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置

VOLUME     --容器数据卷,用于数据保存和持久化的命令

CMD            --指定一个容器启动时要运行的命令。DockerFile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run 之后的参数替换

ENTRYPOINT   --指定一个容器启动时要运行的命令。ENTRYPOINT和CMD一样,都是在指定容器启动程序及参数

ONBUILD     --当构建一个被继承的DockerFile运行命令,父镜像在被继承后父镜像的onbuild被触发

 案例1

Base 镜像(scratch)

Docker Hub中 99%的镜像都是通过在base镜像中安装和配置需要的软件构建出来的

自定义镜像mycentos

官网拉下来的 centos 默认路径是 / ,不支持 vim 不支持 ifconfig

目标:

我们自定义 mycentos目的使我们自己的镜像具备如下:

  登录后的默认路径

  vim编辑器

  查看网络配置ifconfig支持

1.编写

准备Dockerfile文件

mycentos内容Dockerfile

FROM centos
MAINTAINER sw<sw@126.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 "success--------------ok"
CMD /bin/bash

2.构建

docker build -f DockerFile -t 新镜像名字:TAG .

 查看一下我们制作的镜像

docker images

3.运行

docker run -it mycentos:1.3

注; 我们可以看到,自定义的镜像 默认路径发生了改变,并且支持 vim 与 ifconfig

4.列出镜像的变更历史

docker history 6d493064c6ca

 案例2

制作CMD版可以查询IP信息的容器

1.编写

准备Dockerfile文件

mycentos01内容Dockerfile

FROM centos
RUN yum install -y curl
CMD ["curl", "-s", "https://ip.cn"]

2.构建

docker build -f ./mycentos01 -t myip .

3.运行

docker run -it myip

 如果我们要添加一个参数

这时我们就需要使用 ENTRYPOINT 而不能使用 CMD

1.编写

重新编写DockerFile 文件

FROM centos
RUN yum install -y curl
ENTRYPOINT  ["curl", "-s", "https://ip.cn"]

2.构建与运行

原文地址:https://www.cnblogs.com/shangwei/p/15588635.html