Docker CLI docker compose run常用命令

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。Docker是内核虚拟化,不使用Hypervisor是不完全虚拟化,依赖内核的特性实现资源隔离。本文主要介绍Docker CLI 中 docker compose run常用命令。

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的版本信息

推荐阅读
cjavapy编程之路首页