启动 docker 容器时运行命令行

anm*_*lea 7 docker dockerfile

就我而言,您可以在使用 构建映像RUN或运行容器时运行命令行CMD。启动 docker 容器时是否可以这样做?

我的目标是在输入后自动运行 gcloud 数据存储区docker start my_container_name

如果可能的话,我应该对我的 Dockerfile 应用哪些更改?

(我已经安装了所需的所有软件包,之后可以运行该命令docker run --name my_container_name -i -t my_image_name,但我希望在启动容器时也运行它)

ane*_*yte 11

Docker在构建镜像时执行RUN命令。

Docker在启动容器时执行ENTRYPOINT命令。作为 的参数。当您从图像创建容器时,这两个都可以被覆盖。它们在 Dockerfile 中的目的是为将来您或其他人从此映像创建容器时提供默认值。CMDENTRYPOINT

考虑这个例子:

FROM debian:buster

RUN apt update && apt install procps

ENTRYPOINT ["/usr/bin/ps"]
CMD ["aux"]
Run Code Online (Sandbox Code Playgroud)

RUN命令将ps命令添加到映像中,ENTRYPOINT并且CMD不会执行,但当您运行容器时它们将会执行:

FROM debian:buster

RUN apt update && apt install procps

ENTRYPOINT ["/usr/bin/ps"]
CMD ["aux"]
Run Code Online (Sandbox Code Playgroud)

每次使用时docker run都会创建一个容器。使用的 ENTRYPOINTCMD被保存为容器属性并在每次启动容器时执行。