docker-compose-run-command
docker compose run 命令
docker compose run 命令用于启动一个新容器并运行一个特定的服务,而不启动整个 Compose 文件中定义的所有服务。
docker compose run 命令允许你在单个服务上执行任务,如运行一次性命令或调试。
与 docker compose up 的区别在于,run 命令只会运行指定的服务,不会启动依赖它的其他服务。
语法
docker compose run [OPTIONS] SERVICE [COMMAND] [ARGS...]
SERVICE:Compose 文件中定义的服务名称。
COMMAND 和 ARGS:可选参数,指定要在容器内运行的命令及其参数。
OPTIONS 选项:
--rm
:运行后自动删除容器。-d
:以分离模式运行容器。-T
:禁用伪TTY。
实例
1、运行一个特定服务的命令
这个命令将在 web 服务的容器中执行 python manage.py migrate 命令,而不启动其他服务。
2、自动删除容器
这个命令会运行 web 服务并启动一个 Bash 终端,任务完成后会删除容器。
docker compose run 非常适合用来在服务中执行一次性任务,而不影响其他服务的运行。
docker compose rm 命令
docker compose rm 命令用于删除已停止的服务容器。
docker compose rm 命令不会删除运行中的容器,主要用于清理已停止或不再需要的容器,以释放系统资源。
语法
docker compose rm [OPTIONS] [SERVICE...]
SERVICE(可选):要删除的服务容器的名称。如果不指定服务名称,将删除所有已停止的服务容器。
OPTIONS 选项:
-f, --force
:强制删除容器,而不提示用户确认。-s, --stop
:首先停止正在运行的容器,然后删除它们。-v, --volumes
:同时删除与容器关联的卷(volume)。
实例
1、删除所有已停止的服务容器
会列出并提示是否删除所有停止的服务容器。
2、强制删除所有已停止的服务容器
直接删除停止的容器,不会提示用户确认。
3、删除特定服务的已停止容器
仅删除 web 服务的已停止容器。
4、删除并清理相关卷
删除已停止的容器并同时删除与之关联的卷。
docker compose ps 命令
docker compose ps 命令用于列出与 Docker Compose 项目相关的容器及其状态。
docker compose ps 能显示当前项目中所有服务容器的运行状态、端口映射等信息。
语法
docker compose ps [OPTIONS] [SERVICE...]
SERVICE(可选):指定要查看状态的服务名称。如果不指定,将列出所有服务的容器状态。
OPTIONS 选项:
-a, --all
:列出所有容器,包括已停止的容器。-q, --quiet
:仅显示容器 ID,不显示其他信息。--services
:仅列出服务名称,不显示容器的详细信息。--filter
:根据条件过滤输出结果。例如,可以按照状态过滤容器。
输出信息
Name:容器名称。
Command:容器中运行的命令。
State:容器的状态(如 Up、Exited)。
Ports:容器的端口映射。
实例
1、列出所有运行中的容器
docker compose ps
显示当前项目中正在运行的容器及其状态。
2、列出所有容器(包括已停止的容器)
docker compose ps -a
包括停止的容器在内,列出所有容器的状态。
3、仅显示容器 ID
docker compose ps -q
只返回容器的 ID,不包括其他详细信息。
4、列出所有服务的名称
docker compose ps --services
只显示服务名称,而不列出容器的详细信息。
5、根据状态过滤容器
docker compose ps --filter "status=running"
仅列出状态为"running"的容器。
docker compose build 命令
docker compose build 命令用于根据 docker-compose.yml 文件中的定义,构建服务的镜像。
docker compose build 会从指定的 Dockerfile 或 build 上下文中构建镜像,并为所有服务准备好容器。
语法
docker compose build [OPTIONS] [SERVICE...]
SERVICE(可选):指定要构建的服务名称。如果不指定,将为所有服务构建镜像。
OPTIONS 选项:
--no-cache
:在构建过程中不使用缓存层,强制从头开始构建镜像。--pull
:始终尝试从注册表中拉取最新的基础镜像。--build-arg
:传递构建时的变量(类似于 Docker 的--build-arg
选项)。--progress
:指定构建的进度样式(auto
、shell
、tty
),影响显示的输出方式。--parallel
:并行构建多个服务镜像以提高速度。--no-rm
:构建失败时,保留中间容器(默认在成功或失败后都会删除中间容器)。
实例
1、为所有服务构建镜像
docker compose build
根据 docker-compose.yml 中的配置,为所有服务构建镜像。
2、构建特定服务的镜像
docker compose build web
仅为 web 服务构建镜像。
3、不使用缓存构建镜像
docker compose build --no-cache
强制 Docker 从头构建所有镜像,不使用之前构建的缓存层。
4、从最新基础镜像构建
docker compose build --pull
确保 Docker 拉取最新的基础镜像,而不是使用本地镜像。
5、传递构建变量
docker compose build --build-arg NODE_ENV=production
通过 --build-arg 传递构建时所需的变量,例如传递 NODE_ENV 环境变量。
docker compose up 命令
docker compose up 命令用于启动 Docker Compose 项目中定义的所有服务容器,并确保它们按照 docker-compose.yml 文件中的配置运行。
docker compose up 命令不仅会启动服务,还会自动构建尚未构建的镜像(如有必要),创建网络和卷,并以容器的形式启动服务。
语法
docker compose up [OPTIONS] [SERVICE...]
SERVICE(可选):可以指定一个或多个服务,仅启动这些服务。如果不指定,将启动所有服务。
OPTIONS 选项:
-d, --detach
:以后台模式运行容器,类似于在docker run
中使用-d
选项。--build
:在启动之前强制重新构建镜像,即使镜像已存在。--no-build
:阻止在启动时构建镜像,即使镜像不存在也不构建。--force-recreate
:强制重新创建容器,即使它们已经存在且内容未发生变化。--no-recreate
:如果容器已经存在,则不重新创建它们(默认行为是如果配置文件变化则重新创建)。--remove-orphans
:移除不再在 Compose 文件中定义的孤立容器。-V, --renew-anon-volumes
:重新创建匿名卷(删除旧的卷并创建新的)。
实例
1、启动所有服务并附加到控制台
docker compose up
启动 Compose 文件中定义的所有服务,并将日志输出显示在当前终端中。
2、在后台模式运行服务
docker compose up -d
以后台(分离)模式运行所有服务,终端不会输出服务的日志。
3、仅启动指定服务
docker compose up web
只启动 web 服务,而不启动其他服务。
4、启动服务并强制重建镜像
docker compose up --build
在启动服务之前,强制重新构建服务镜像。
5、启动服务并强制重新创建容器
docker compose up --force-recreate
强制重新创建服务容器,即使之前的容器存在且未发生更改。
6、启动服务并移除不再存在于 Compose 文件中的孤立容器
docker compose up --remove-orphans
移除任何不再在当前 docker-compose.yml 文件中定义的容器。
docker compose ls 命令
docker compose ls 命令用于列出当前系统中所有 Docker Compose 项目及其状态。
docker compose ls 命令可以帮助你快速查看有哪些 Compose 项目正在运行或处于其他状态。
语法
docker compose ls [OPTIONS]
OPTIONS 选项:
--all
:显示所有项目,包括未启动的项目。--filter
:根据条件过滤输出结果。例如,可以按状态过滤。--format
:指定输出格式(如table
、json
等)。--quiet
:只显示项目名称,而不显示其他信息。
输出信息:
docker compose ls
的输出信息包括以下字段:
Name:项目名称。
Status:项目的状态(例如
running
、exited
等)。Config Files:与项目相关联的
docker-compose.yml
文件的路径。
实例
1、列出所有运行的 Docker Compose 项目
docker compose ls
显示当前正在运行的所有项目及其状态。
2、列出所有项目(包括未启动的)
docker compose ls --all
显示包括未启动的项目在内的所有 Compose 项目。
3、仅显示项目名称
docker compose ls --quiet
只返回项目名称,而不包括详细信息。
4、按状态过滤项目
docker compose ls --filter "status=running"
仅显示状态为 running 的项目。
docker compose start 命令
docker compose start 命令用于启动已存在但目前处于停止状态的 Docker Compose 服务容器。
与 docker compose up 不同,它不会创建新的容器或重新构建镜像,只会启动已经创建但停止的容器。
语法
docker compose start [SERVICE...]
SERVICE(可选):指定要启动的服务名称。如果不指定,将启动所有已停止的服务容器。
实例
1、启动所有已停止的服务
docker compose start
这将启动所有当前处于停止状态的容器。
2、启动特定服务
docker compose start web
仅启动 web 服务的容器,而不影响其他服务。
docker compose restart 命令
docker compose restart 命令命令用于重启一个或多个服务。
与 docker compose restart 命令会停止正在运行的服务容器,然后重新启动它们。
如果你需要更新配置或者只是想简单地重启服务而不需要重建容器,那么 restart 是很有用的。
语法
docker compose restart [SERVICE...]
SERVICE(可选):可以指定要重启的一个或多个服务名称。如果不指定服务名称,则会重启所有在 docker-compose.yml 文件中定义的服务。
实例
1、重启所有服务:
docker compose restart
2、重启特定的服务(例如名为 web 和 db 的服务):
docker compose restart web db
确保你在包含 docker-compose.yml 文件的目录中执行这些命令,或者通过 -f 参数指定 docker-compose.yml 文件的位置。例如,如果你的 docker-compose.yml 文件不在当前目录下,你可以这样指定文件位置:
docker compose -f /path/to/docker-compose.yml restart
这样做可以让你控制哪个 docker-compose.yml 文件被用来管理服务。
Last updated