zoukankan      html  css  js  c++  java
  • Docker DockerFile文件指令 & 构建

    1.dockerfile指令格式

    1. # Comment注释
    2. INSTRUCTION argument指令名 + 参数

    2.普通指令

    1. FROM

    已存在的镜像,基础镜像,第一条非注释指令

    FROM <image>

    FROM <image>:<tag>

    2. MAINTAINER

    镜像作者信息、联系信息
    与dockercommit -a类似

    MAINTAINER <name>

    3. RUN

    指定当前镜像中运行的命令

    每一个RUN指令都毁在当层镜像的上层创建一个新的镜像

    RUN <command> shell模式

    默认/bin/sh -c command

    RUN ["executable","param1","param2"] exec模式

    指定其他shell:
    RUN["/bin/bash","-c","echo hello"]

    docker 构建过程:
    docker build -t="NAME" -t 指定镜像名

    4. EXPOSE

    指定运行该容器使用的端口

    EXPOSE <port>[<port>...]

    出于安全考虑,使用中仍需用 -p <port>命令指定

    3. CMD ENTERYPOINT 容器运行时运行的命令

    1. CMD

    CMD ["executable","param1","param2"] exec模式

    CMD <command> shell模式

    与RUN区别:RUN是在容器构建是运行,CMD是在容器运行时运行。在docker run中指定命令,会覆盖CMD命令,即CMD是默认命令。

    CMD ["param1","param2"] 做为ENTRYPOINT指令的默认参数

    2. ENTERYPOINT

    CMD ["executable","param1","param2"] exec模式

    CMD <command> shell模式

    与CMD区别:不会被docker run 中运行的命令覆盖。可以使用docker run --entrypoint覆盖。entrypoint可与cmd组合:entrypoint指定命令,cmd指定参数。

    4. ADD COPY VOLUME 设置镜像目录及文件

    1. ADD

    包含类似tar的解压功能,安装tar有所帮助

    ADD <src>...<dest>
    ADD ["<src>"..."<dest>"]适用于文件路径有空格的情况

    2. COPY

    使用于纯粹复制文件

    COPY <src>...<dest>
    COPY ["<src>"..."<dest>"]适用于文件路径有空格的情况

    3. VOLUME

    VOLUME["/data"]

    用于创建的容器添加卷,一个卷可以存在一个或多个容器的特定目录,这个目录可以跨过联合文件系统,并提供如共享数据,对数据持久化功能。

    5. WORKDIR ENV USER镜像在构建及容器运行时的环境设置

    1. WORKDIR

    在容器内部设置工作目录

    WORKDIR /path/to/workdir

    cmd、entrypoint命令都会在这个目录下执行。
    一般使用绝对路径,如果用相对路径会一直传递下去。

    2. ENV

    设置环境变量,在构建过程中和运行中均有效

    ENV <key> <value>
    ENV <key>=<value>

    3. USER

    容器以什么用户运行,不指定默认为root
    USER daemon
    USER uid:gid
    USER user:group

    6. ONBULID 类似触发器的指令

    ONBULID [INSTRUCTION]
    为镜像添加触发器,当一个镜像被用作其他镜像的基础镜像时,触发器被执行,当子镜像被构建时,会插入触发器的指令。ONBUILD指令不会在自己构建时运行。

    7.构建镜像

    默认会使用构建缓存,但是类似于 apt-get update不希望使用缓存,需要加上--no-cache或是在Dockerfile中修改ENV REFRESH_DATE 日期,便会使缓存刷新。

    查看构建过程:docker history [image]

    在安装nginx的容器中以后台程序运行NGINX:

    docker run -d --name nginx -p 80 unbuntufornginx nginx -g "daemon off;"

  • 相关阅读:
    CF149D Coloring Brackets
    CF508D
    CF483C Diverse Permutation
    【纪念】我写过几乎最长的代码
    .net core图片上传详解
    layui插件croppers的使用
    关于日常操作中sql的性能
    leeCode 278
    leeCode刷题 1078
    leeCode刷题 lc184
  • 原文地址:https://www.cnblogs.com/boxker/p/10617878.html
Copyright © 2011-2022 走看看