Docker——Dockerfile常用命令

CMD、ENTRYPOINT

  1. 相同点
# 将命令放在列表中,会原样执行命令
CMD ['touch', '/test']  # 实际执行命令 touch /test

# 不将命令放在列表中,会在命令前加上/bin/sh -c
CMD touch /test    # 实际执行命令 /bin/sh -c touch /test
  1. 不同点
  • docker run指定的启动命令会覆盖CMD命令
  • docker run指定的启动参数会传递给ENTRYPOINT执行
# nginx Dockerfile
ENTRYPOINT ["/usr/sbin/nginx"]
CMD ["-h"]

# 1. dokcer run
docker run -itd nginx:1.9 -g "daemon off;"

# 实际执行命令
/usr/sbin/nginx -g "daemon off;"  # -g "daemon off;" 覆盖了CMD的-h

# 2. docker run
docker run -itd nginx:1.9
# 实际运行命令
/usr/sbin/nginx -h

RUN

RUN命令只在构建镜像时有效

WORKDIR

  1. 设置镜像的根目录,在WORKDIR之后的命令都会在这个目录中执行
  2. 可以通过docker run -w指定工作目录

ENV

在镜像构建过程中设置环境变量

USER

设置运行镜像的用户名或UID或组或GID或组合

USER user
USER user:group
USER uid
USER uid:gid
USER user:gid
USER uid:group

VOLUME

ADD和COPY

相同点:

  • 目标目录不存在会自动创建
  • 文件末尾有’/'被视为目录,否则被视为文件

不同点:

  • ADD能复制远程文件到容器内
  • 能够将压缩包(gzip、bzip2、xz)自动解压缩到容器内,不支持URL压缩包
  • ADD使构建缓存无效,ADD之后的指令不能使用之前的构建缓存?

LABEL

为docker镜像设置元数据,元数据是键值对的形式,不同元数据之间用空格分隔。
建议所有元数据写到一条LABEL中,避免创建过多的镜像层

STOPSIGNAL

设置停止容器时发送什么系统调用信号给容器。

ARG

  • 定义构建时需要的变量,变量可以设置初始值,也可以只设置变量名
  • 变量都可以在docker build 时使用–build-arg指定该变量的值
# Dockerfile
ARG build
ARG webapp_user=user

# 指定变量build的值,webapp_user会使用默认值
docker build --build-arg build=123  -t image:tag
  • 预定义的ARG变量
HTTP_PROXY
http_proxy
HTTPS_PROXY 
https_proxy 
FTP_PROXY 
ftp_proxy 
NO_PROXY 
no_proxy

ONBUILD

为镜像添加触发器,当镜像被用作其他镜像的基础镜像时,该镜像的触发器竟会被执行。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值