Dockerfile(5) - CMD 指令详解

CMD

指定容器默认执行的命令

#  exec 形式,推荐
CMD ["executable","param1","param2"]
CMD ["可执行命令", "参数1", "参数2"...]

# 作为ENTRYPOINT的默认参数
CMD ["param1","param2"]

# shell
CMD 命令 param1 param2
 

重点

  • 一个 Dockerfile 只有一个 CMD 指令,若有多个,只有最后一个 CMD 指令生效
  • CMD 主要目的:为容器提供默认执行的命令,这个默认值可以包含可执行文件
  • 也可以不包含可执行文件,意味着必须指定 ENTRYPOINT 指令(第二种写法)

exec 模式下使用环境变量

# 错误写法,不会使用 HOME 环境变量
CMD [ "echo", "$HOME" ]

# 正确写法,需要将 echo 和使用环境变量放一起
CMD [ "sh", "-c", "echo $HOME" ]

RUN 和 CMD

  • RUN 可以在构建阶段运行很多个命令,而且每运行一个命令都会单独提交结果
  • CMD 在构建阶段不执行任何操作,而是指定镜像默认执行的命令

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Dockerfile和Docker Compose是Docker生态系统中两个非常重要的工具,它们可以帮助我们更方便地构建、管理和部署Docker容器。 Dockerfile是一个文本文件,其中包含了一系列的指令,用于描述如何构建一个Docker镜像。通过Dockerfile,我们可以定义容器的基础镜像、安装软件、配置环境变量、暴露端口等操作。使用Dockerfile可以实现容器的自动化构建,避免手动操作的繁琐和出错。 Docker Compose是一个用于定义和运行多个Docker容器的工具。通过一个YAML文件,我们可以定义多个服务(service),每个服务可以包含一个或多个容器。在Docker Compose中,我们可以定义容器的镜像、端口映射、环境变量、数据卷等信息。使用Docker Compose可以方便地管理多个容器之间的依赖关系和通信。 下面是一个简单的Dockerfile示例: ``` FROM ubuntu:latest RUN apt-get update && apt-get install -y nginx COPY index.html /var/www/html/ EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] ``` 这个Dockerfile定义了一个基于Ubuntu最新版的Nginx镜像。首先通过apt-get安装了Nginx,然后将本地的index.html文件复制到容器中的/var/www/html/目录下。最后暴露了容器的80端口,并启动了Nginx服务。 下面是一个简单的Docker Compose示例: ``` version: '3' services: web: build: . ports: - "80:80" db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: example ``` 这个Docker Compose文件定义了两个服务:web和db。web服务使用当前目录下的Dockerfile进行构建,并将容器的80端口映射到主机的80端口。db服务使用MySQL 5.7镜像,并设置了MYSQL_ROOT_PASSWORD环境变量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值