Docker命令-Docker Compose
浅小兮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、运行一个特定服务的命令
docker compose run web python manage.py migrate
这个命令将在 web 服务的容器中执行 python manage.py migrate 命令,而不启动其他服务。
2、自动删除容器
docker compose run --rm web bash
这个命令会运行 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、删除所有已停止的服务容器
docker compose rm
会列出并提示是否删除所有停止的服务容器。
2、强制删除所有已停止的服务容器
docker compose rm -f
直接删除停止的容器,不会提示用户确认。
3、删除特定服务的已停止容器
docker compose rm web
仅删除 web 服务的已停止容器。
4、删除并清理相关卷
docker compose rm -v
删除已停止的容器并同时删除与之关联的卷。
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
、plain
、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 文件被用来管理服务。