互联网技术 / 互联网资讯 · 2023年11月2日 0

Docker Compose run命令解析

Docker Compose 的 Run 命令允许您为服务执行一次性命令。通过该命令,可以从服务定义的配置中启动一个新的容器,这些配置包括卷、链接及其他相关信息。

语法格式

用法:

Run [选项] [-v 卷…] [-p 端口…] [-e 键=值…] [-l 键=值…]

服务 [命令] [参数…]

选项:

-d, –detach 以后台模式运行,并返回容器名称。

–name NAME 为容器指定一个名称。

–entrypoint CMD 覆盖镜像中的默认入口点。

-e 键=值 设置环境变量,可以多次使用。

-l, –label 键=值 添加或覆盖标签(可多次使用)。

-u, –user=”” 指定运行时的用户。

–no-deps 不启动依赖服务,仅启动指定的服务。

–rm 运行后删除容器,除非以后台模式运行(-d)。

-p, –publish=[] 映射开放端口。

–service-ports 将 Compose 文件中配置的端口进行映射。

–use-aliases 使用网络服务的别名连接容器。

-v, –volume=[] 绑定挂载卷。

-T 禁用 TTY。

-w, –workdir=”” 设置工作目录。

例如,以下命令启动 web 服务,并以 bash 作为其执行命令:

docker-compose run web bash

使用的 Run 命令会从服务定义的配置中启动一个新容器,其中包括卷、链接和其他相关信息。不过,有两个关键的不同点。

首先,Run 命令会覆盖服务配置中定义的命令。例如,如果 web 服务配置的命令是以 bash 开头,则执行 docker-compose run web python app.py 会覆盖为 python app.py。

第二个区别在于,docker-compose run 命令不会自动创建服务配置中指定的端口,这样可以避免与已有端口发生冲突。如果希望创建服务的端口并将其映射到主机,可以使用 –service-ports 标志:

docker-compose run –service-ports web python manage.py shell

另外,也可以通过 –publish 或 -p 选项手动指定端口映射,类似于使用 docker run 时的方式:

docker-compose run –publish 8080:80 -p 2022:22 -p 127.0.0.1:2021:21 web python manage.py shell

在启动使用链接配置的服务时,Run 命令会先检查相关的链接服务是否在运行,如未运行,则会先启动这些服务。一旦所有链接服务启动成功,Run 执行您传递的命令。例如,您可以输入:

docker-compose run db psql -h db -U docker

这会为链接的 db 容器打开一个交互式 PostgreSQL Shell。

如果您不希望 Run 命令启动链接容器,可以使用 –no-deps 标志:

docker-compose run –no-deps web python manage.py shell

若想在运行后自动删除覆盖的容器,可以使用 –rm 标志:

docker-compose run –rm web python manage.py db upgrade

这将运行数据库升级脚本,并在完成后删除容器,即使服务配置中指定了重启策略。

[[[IMG_1]]]

[[[IMG_2]]]

[[[IMG_3]]]