dokerfile的作用就是自定义docker镜像每一层的作用
基础指令
FROM
FROM指令用于指定其后构建新镜像所使用的基础镜像。FROM指令必是Dockerfile文件中的首条命令,启动构建流程后,Docker将会基于该镜像构建新镜像,FROM后的命令也会基于这个基础镜像
RUN
RUN用于在镜像容器中执行命令,RUN指令创建的中间镜像会被缓存,并会在下次构建中使用,一般后面跟着shell指令
ADD
ADD用于复制构建环境中的文件或目录到镜像中。<src>是源文件位置可以是一个构建上下文中的文件或目录,也可以是一个URL,但不能访问构建上下文之外的文件或目录,<dest>来指定目标位置
COPY
COPY同样用于复制构建环境中的文件或目录到镜像中。COPY指令非常类似于ADD,不同点在于COPY只会复制构建目录下的文件,不能使用URL也不会进行解压操作
WORKDIR
WORKDIR用于在容器内设置一个工作目录,通过WORKDIR设置工作目录后,Dockerfile中其后的命令RUN、CMD、ENTRYPOINT、ADD、COPY等命令都会在该目录下执行。在使用docker run运行容器时,可以通过-w参数覆盖构建时所设置的工作目录
EXPOSE
EXPOSE用于指定容器在运行时监听的端口:EXPOSE <port> [<port>...] 。EXPOSE并不会让容器的端口访问到主机。要使其可访问,需要在docker run运行容器时通过-p来发布这些端口,或通过-P参数来发布EXPOSE导出的所有端口
CMD
CMD用于指定在容器启动时所要执行的命令。CMD在Dockerfile文件中仅可指定一次,指定多次时,会覆盖前的指令
实践
一.创建Dockerfile(名字必须是dockerfile)
#写镜像来源
FROM nginx
#更改配置文件
RUN echo '<meta charset=utf8>koniaoer_docker.' > /usr/share/nginx/html/index.html:;
docker build .
#运行dockerfile
运行nginx
进阶指令
LABEL
LABEL用于为镜像添加元数据,元数以键值对的形式指定,一条LABEL指定可以指定一或多条元数据,指定多条元数据时不同元数据之间通过空格分隔
ENV
ENV用于设置环境变量,其有以下两种设置形式:
ENV <key> <value>
ENV <key>=<value> ...
这些环境变量不仅可以构建镜像过程(在ENV命令之后)使用,使用该镜像创建的容器中也可以使用。
VOLUME
VOLUME用于创建挂载点,即向基于所构建镜像创始的容器添加卷:VOLUME ["/data"]。一个卷可以存在于一个或多个容器的指定目录,该目录可以绕过联合文件系统
USER
USER用于指定运行镜像所使用的用户,用户可以使用用户名、UID或GID,或是两者的组合。
使用USER指定用户后,Dockerfile中其后的命令RUN、CMD、ENTRYPOINT都将使用该用户。镜像构建完成后,通过docker run运行容器时,可以通过-u参数来覆盖所指定的用户
ARG
ARG用于指定传递给构建运行时的变量
ONBUILD
ONBUILD用于设置镜像触发器,当所构建的镜像被用做其它镜像的基础镜像,该镜像中的触发器将会被钥触发
STOPSIGNAL
STOPSIGNAL用于设置停止容器所要发送的系统调用信号:STOPSIGNAL signal。所使用的信号必须是内核系统调用表中的合法的值,如:9、SIGKILL
SHELL
SHELL用于设置执行命令(shell式)所使用的的默认shell类型:SHELL ["executable", "parameters"]。SHELL在Windows环境下比较有用,Windows下通常会有cmd和powershell两种shell,可能还会有sh
            
          
评论区