设置容器启动命令和参数

ECI Pod(即ECI实例)通过容器镜像中的预设参数来启动容器。如果您在构建镜像时没有设置启动命令和参数,或者想要变更启动命令和参数,可以在创建ECI Pod时设置。通过设置容器启动命令和参数,可以定义容器的启动行为和初始化过程,保证容器能够正确运行并提供所需服务。本文介绍如何为容器设置启动命令和参数。

功能说明

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

  • 工作目录

    镜像构建时,通过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。

配置示例

您可以通过容器的workingDircommandargs字段来设置工作目录、启动命令和参数。更多信息,请参见为容器设置启动时要执行的命令和参数

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test
  labels:
    app: test
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      name: nginx-test
      labels:
        app: nginx
        alibabacloud.com/eci: "true" 
    spec:
      containers:
      - name: nginx
        image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
        workingDir: /work
        command: ["sleep"]
        args: ["999"]
        ports:
        - containerPort: 80