ECI Pod(即ECI实例)通过容器镜像中的预设参数来启动容器。如果您在构建镜像时没有设置启动命令和参数,或者想要变更启动命令和参数,可以在创建ECI Pod时设置。通过设置容器启动命令和参数,可以定义容器的启动行为和初始化过程,保证容器能够正确运行并提供所需服务。本文介绍如何为容器设置启动命令和参数。
功能说明
如果您想覆盖镜像中设置的启动默认值,包括工作目录、启动命令和参数,可以通过以下参数进行配置:
工作目录
镜像构建时,通过WORKDIR可以指定容器的工作目录, 容器启动时执行的命令会在该目录下执行。更多信息,请参见WORKDIR。
创建ECI实例时,通过配置ECI实例中容器的工作目录( WorkingDir),可以覆盖WORKDIR。
说明如果镜像里未指定WORKDIR,且创建ECI实例也未配置工作目录,则工作目录默认为根目录。
如果指定的工作目录不存在,系统将自动创建。
启动命令和参数
镜像构建时,通过ENTRYPOINT和CMD可以指定启动容器后要执行的命令和参数。更多信息,请参见ENTRYPOINT和CMD。
创建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。
配置示例
您可以通过容器的workingDir
、command
和args
字段来设置工作目录、启动命令和参数。更多信息,请参见为容器设置启动时要执行的命令和参数。
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