设置容器启动命令和参数
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: 2
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: ["printenv"]
args: ["HOSTNAME", "KUBERNETES_PORT"]
ports:
- containerPort: 80