设置容器运行命令

最近更新时间:2018-11-30 10:40:40

在默认的情况下,镜像会运行默认的命令,如果我们想运行一个特定的命令或重写镜像的默认值,这里需要使用到以下三个设置

  • 工作目录(workingDir):指定运行命令的工作目录
  • 运行命令(command):控制镜像运行的实际命令
  • 运行参数(args):传递给运行命令的参数

工作目录说明

指定运行命令的工作目录。若镜像中未指定工作目录,且在控制台未指定,则默认为"/".

设置容器启动时运行命令和参数

Docker 的镜像拥有存储镜像信息的相关元数据,如果不提供运行命令和参数,容器运行会运行镜像制作时提供的默认的命令和参数,Docker 原生定义这两个字段为 “ Entrypoint ” 和 " CMD "。详情可查看 Docker的 EntrypointCMD说明

如果要覆盖默认的Entrypoint 与 CMD,需要遵循如下规则:

  • 如果在容器配置中没有设置command 或者 args,那么将使用Docker镜像自带的命令及参数
  • 如果在容器配置中只设置了command但是没有设置args,那么容器启动时只会执行该命令,Docker镜像中自带的命令及其参数会被忽略
  • 如果在容器配置中只设置了args,那么Docker镜像中自带的命令会使用该新入参作为其执行时的参数
  • 如果在容器配置中同时设置了command 与 args,那么Docker镜像中自带的命令及其入参会被忽略。容器启动时只会执行配置中设置的命令,并使用配置中设置的入参作为命令的参数

下表涵盖了各类设置场景

镜像Entrypoint 镜像CMD 容器command 容器args 最终执行
[touch] [/usr/test] 未设置 未设置 [touch /usr/test]
[touch] [/usr/test] [mkdir] 未设置 [mkdir]
[touch] [/usr/test] 未设置 [opt/test] [touch /usr/test]
[touch] [/usr/test] [mkdir] [opt/test] [mkdir /opt/test]

金山云,开启您的云计算之旅

注册有礼