23·Dockerfile入门

RUN 与 CMD

RUN 与 CMD

RUN vs CMD

RUN   = 构建时执行(生成镜像层)
CMD   = 运行时执行(容器启动时)

RUN 指令

# Shell 形式
RUN apt-get update && apt-get install -y curl

# Exec 形式
RUN ["apt-get", "install", "-y", "curl"]

# 多条 RUN 合并(减少层数)
RUN apt-get update && \
    apt-get install -y \
        curl \
        wget \
        vim && \
    rm -rf /var/lib/apt/lists/*

CMD 指令

# Exec 形式(推荐)
CMD ["nginx", "-g", "daemon off;"]

# Shell 形式
CMD nginx -g "daemon off;"

# 作为 ENTRYPOINT 的默认参数
CMD ["--help"]

RUN vs CMD 对比

方面RUNCMD
执行时机构建时运行时
数量可多个只有最后一个生效
缓存会被缓存不影响构建
覆盖-docker run 参数覆盖

小结

指令时机用途
RUN构建安装软件、编译代码
CMD运行设置默认启动命令

练习编辑器

bash
Loading...