设置容器启动命令和参数
更新时间:2024-09-25
设置容器启动命令和参数
BCI实例(即BCI Pod)通过容器镜像中的预设参数来启动容器。如果您在构建镜像时没有设置启动命令和参数,或者想要变更启动命令和参数,可以在创建BCI Pod时设置。本文介绍如何为容器设置启动时要执行的命令和参数。
功能说明
如果您想覆盖镜像中设置的启动默认值,包括工作目录、启动命令和参数,可以通过以下参数进行配置:
- 工作目录镜像构建时,通过WORKDIR可以指定容器的工作目录, 容器启动时执行的命令会在该目录下执行。更多信息,请参见WORKDIR。创建BCI实例时,通过配置BCI实例中容器的工作目录(WorkingDir),可以覆盖WORKDIR。
注意:
如果镜像里未指定WORKDIR,且创建BCI实例也未配置工作目录,则工作目录默认为根目录。 如果指定的工作目录不存在,系统将自动创建。
- 启动命令和参数镜像构建时,通过ENTRYPOINT和CMD可以指定启动容器后要执行的命令和参数。更多信息,请参见ENTRYPOINT和CMD。创建BCI实例时,通过配置BCI实例中容器的启动命令(Command)和参数(Arg),可以覆盖ENTRYPOINT和CMD。具体生效规则如下:
镜像ENTRYPOINT | 镜像CMD | 容器command | 容器Arg | 最终执行命令 | 说明 |
---|---|---|---|---|---|
ls | /root/data | 未设置 | 未设置 | ls /root/data | 容器的Command和Arg均未设置,则执行镜像ENTRYPOINT和CMD |
ls | /root/data | cd | 未设置 | cd | 容器设置了Command,未设置Arg,则只执行Command,忽略镜像ENTRYPOINT和CMD |
ls | /root/data | 未设置 | /home/work | ls /home/work | 容器设置了Arg,未设置Command,则执行镜像ENTRYPOINT和容器Arg |
ls | /root/data | cd | /home/work | cd /home/work | 同时设置了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
spec:
containers:
- name: nginx
image: hub.baidubce.com/cce/nginx-alpine-go
workingDir: /work
command: ["printenv"]
args: ["HOSTNAME", "KUBERNETES_PORT"]
ports:
- containerPort: 80