全部产品

设置容器启动命令和参数

ECI实例通过容器镜像中的预设参数来启动容器。如果您在构建镜像时没有设置启动命令和参数,或者想要变更启动命令和参数,可以在创建ECI实例时设置。本文介绍如何为容器设置启动时要执行的命令和参数。

背景信息

如果您想覆盖镜像中设置的启动默认值,包括工作目录、启动命令和参数,可以通过以下参数进行配置:

  • 工作目录

    镜像构建时,通过WORKDIR可以指定容器的工作目录, 容器启动时执行的命令会在该目录下执行。更多信息,请参见WORKDIR

    创建ECI实例时,通过配置ECI实例中容器的工作目录( WorkingDir),可以覆盖WORKDIR。

    说明

    • 如果镜像里未指定WORKDIR,且创建ECI实例也未配置工作目录,则工作目录默认为根目录。

    • 如果指定的工作目录不存在,系统将自动创建。

  • 启动命令和参数

    镜像构建时,通过ENTRYPOINT和CMD可以指定启动容器后要执行的命令和参数。更多信息,请参见ENTRYPOINTCMD

    创建ECI实例时,通过配置ECI实例中容器的启动命令(Command)和参数(Arg),可以覆盖ENTRYPOINT和CMD。具体生效规则如下:

    镜像ENTRYPOINT

    镜像CMD

    容器Command

    容器Arg

    最终执行

    说明

    [mkdir]

    [/data/backup]

    未设置

    未设置

    [mkdir /data/backup]

    Command和Arg均未设置,则执行镜像ENTRYPOINT和CMD。

    [mkdir]

    [/data/backup]

    [cd]

    未设置

    [cd]

    设置了Command,未设置Arg,则只执行Command,忽略镜像ENTRYPOINT和CMD。

    [mkdir]

    [/data/backup]

    未设置

    [/opt/backup]

    [mkdir /opt/backup]

    设置了Arg,未设置Command,则执行镜像ENTRYPOINT和容器Arg。

    [mkdir]

    [/data/backup]

    [cd]

    [/opt/backup]

    [cd /opt/backup]

    同时设置了Command和Arg,则执行容器Command和Arg。

    注意

    启动命令必须为容器镜像支持的命令,否则会导致容器启动失败。

Kubernetes方式

使用Kubernetes方式创建ECI实例时,您可以通过容器的workingDir、command和args字段来设置工作目录、启动命令和参数。示例如下:

apiVersion: v1
kind: Pod
metadata:
  name: command-demo
spec:
  containers:
  - name: busybox
    image: busybox
    workingDir: /work
    command: ["printenv"]
    args: ["HOSTNAME", "KUBERNETES_PORT"]
  restartPolicy: OnFailure

更多信息,请参见为容器设置启动时要执行的命令和参数

OpenAPI方式

调用CreateContainerGroup接口创建ECI实例时,您可以通过容器中的WorkingDir、Command和Arg参数来设置工作目录、启动命令和参数。相关参数说明如下表所示。更多信息,请参见CreateContainerGroup

名称

类型

是否必选

示例值

描述

Container.N.WorkingDir

String

/usr/local/

容器工作目录。

Container.N.Command.N

RepeatList

sleep

容器启动命令。最多20个。

Container.N.Arg.N

RepeatList

100

容器启动命令对应的参数。最多10个。

控制台方式

通过弹性容器实例售卖页创建ECI实例时,您可以在容器配置中设置各个容器的启动命令和参数,如下图所示。

容器启动命令