docker compose run

描述在服务上运行一次性命令
用法docker compose run [选项] 服务 [命令] [参数...]

描述

针对服务运行一次性命令。

以下命令启动 `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

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

选项

选项默认值描述
--build在启动容器之前构建镜像
--cap-add添加 Linux 能力
--cap-drop删除 Linux 能力
-d, --detach在后台运行容器并打印容器 ID
--entrypoint覆盖镜像的入口点
-e, --env设置环境变量
--env-from-file从文件设置环境变量
-i, --interactivetrue即使未连接也保持 STDIN 打开
-l, --label添加或覆盖标签
--name为容器分配一个名称
-T, --no-TTYtrue禁用伪 TTY 分配(默认值:自动检测)
--no-deps不启动链接服务
-p, --publish将容器的端口发布到主机
--pull策略运行前拉取镜像("always"|"missing"|"never")
-q, --quiet不向 STDOUT 打印任何内容
--quiet-build抑制构建过程的进度输出
--quiet-pull不打印进度信息进行拉取
--remove-orphans移除 Compose 文件中未定义的服务容器
--rm容器退出时自动删除容器
-P, --service-ports运行命令时启用所有服务的端口并将其映射到主机
--use-aliases在容器连接到的网络中使用服务的网络别名
-u, --user以指定用户名或 uid 运行
-v, --volume绑定挂载一个卷
-w, --workdir容器内的工作目录
© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.