1、docker compose run简介
docker compose run
可以在服务上运行一次性命令。
下面的命令启动web服务并将bash作为其命令运行:
docker compose run web bash
与run一起使用的命令在新的容器中启动,配置由服务的配置定义,包括卷、链接和其他详细信息。然而,有两个重要的区别:
1)run传递的命令覆盖了服务配置中定义的命令。例如,如果web服务配置是用bash启动的,则docker compose run web python app.py会用python app.py覆盖它。
2)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
如果启动使用links配置的服务,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
注意:这将运行数据库升级脚本,并在完成运行时删除容器,即使在服务配置中指定了重启策略。
参考文档:https://docs.docker.com/engine/reference/commandline/compose_run/
2、docker compose run语法
docker compose run [OPTIONS] SERVICE [COMMAND] [ARGS...]
3、选项说明
名称, 简称 | 默认 | 描述 |
--build | 在启动容器之前构建映像。 | |
--detach , -d | 在后台运行container并打印容器ID | |
--entrypoint | 覆盖镜像的入口点 | |
--env , -e | 设置环境变量 | |
--interactive , -i | true | 保持STDIN打开,即使没有连接。 |
--label , -l | 添加或覆盖标签 | |
--name | 为容器分配一个名称 | |
--no-TTY , -T | true | 禁用伪tty分配(默认:自动检测)。 |
--no-deps | 不要启动链接服务。 | |
--publish , -p | 向主机发布容器的端口。 | |
--quiet-pull | 不打印拉取的进度信息。 | |
--rm | 容器退出时自动移除 | |
--service-ports | 运行命令并启用服务端口并映射到主机。 | |
--tty , -t | true | 分配一个伪tty。 |
--use-aliases | 在容器连接的网络中使用服务的网络使用别名。 | |
--user , -u | 以指定的用户名或uid运行 | |
--volume , -v | 绑定挂载卷。 | |
--workdir , -w | 容器内的工作目录 |
4、子命令
命令 | 描述 |
docker compose build | 构建或重建服务 |
docker compose convert | 将compose文件转换为平台的规范格式 |
docker compose cp | 在服务容器和本地文件系统之间复制文件/文件夹 |
docker compose create | 为服务创建容器 |
docker compose down | 停止并移除容器,网络 |
docker compose events | 从容器中接收实时事件。 |
docker compose exec | 在正在运行的容器中执行命令。 |
docker compose images | 列出容器使用的镜像 |
docker compose kill | 强制停止服务容器。 |
docker compose logs | 查看容器的输出 |
docker compose ls | 运行compose项目的列表 |
docker compose pause | 暂停服务 |
docker compose port | 输出端口绑定的公共端口。 |
docker compose ps | 列出容器列表 |
docker compose pull | 拉取服务镜像 |
docker compose push | 推送服务镜像 |
docker compose restart | 重启服务容器 |
docker compose rm | 移除已停止的服务容器 |
docker compose run | 在服务上运行一次性命令。 |
docker compose start | 开始服务 |
docker compose stop | 停止服务 |
docker compose top | 显示正在运行的进程 |
docker compose unpause | 取消暂停的服务 |
docker compose up | 创建并启动容器 |
docker compose version | 显示Docker Compose的版本信息 |