新网Logo
首页>主机-资讯>

云计算核心技术Docker教程:Dockerfile文件CMD命令详解

登录 注册

云计算核心技术Docker教程:Dockerfile文件CMD命令详解

  • 来源:网络
  • 更新日期:2020-10-28

摘要:Dockerfile文件ADD指令是用于指定默认的容器主进程的启动命令。Docker 不是虚拟机,容器就是进程。既然是进程,那么在启动容器的时候,需要指定所运行的程序及参数。 语法格式 s

Dockerfile文件ADD指令是用于指定默认的容器主进程的启动命令。Docker 不是虚拟机,容器就是进程。既然是进程,那么在启动容器的时候,需要指定所运行的程序及参数。

语法格式

shell 格式:CMD 命令

exec 格式:CMD [可执行文件, 参数1, 参数2...]

参数列表格式:CMD [参数1, 参数2...]。在指定了 ENTRYPOINT 指令后,用 CMD 指定具体的参数。

docker在运行时可以指定新的命令来替代镜像设置中的这个默认命令,比如,ubuntu 镜像默认的 CMD 是 /bin/bash,如果我们直接 docker run -it ubuntu 的话,会直接进入 bash。我们也可以在运行时指定运行别的命令,如 docker run -it ubuntu cat /etc/os-release。这就是用 cat /etc/os-release 命令替换了默认的 /bin/bash 命令了,输出了系统版本信息。

在指令格式上,一般推荐使用 exec 格式,这类格式在解析时会被解析为 JSON 数组,因此一定要使用双引号 ,而不要使用单引号。

如果使用 shell 格式的话,实际的命令会被包装为 sh -c 的参数的形式进行执行。比如:

CMD echo $HOME

在实际执行中,会将其变更为:

CMD [ sh, -c, echo $HOME ]

这就是为什么我们可以使用环境变量的原因,因为这些环境变量会被 shell 进行解析处理。

新网箭头云服务器