docker-compose 常用命令(附 docker-compose 的安装教程)

1. docker-compose 介绍

1. docker-compose 简介

比较官方的说法:

  • Docker-Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。 Docker-Compose 将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)。Docker-Compose 运行目录下的所有文件(docker-compose.ymlextends 文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像,参数,依赖。一个服务当中可包括多个容器实例,Docker-Compose并没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡。
  • Docker-Compose 的工程配置文件默认为 docker-compose.yml,可通过环境变量 COMPOSE_FILE-f 参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。 使用一个 Dockerfile 模板文件,可以让用户很方便的定义一个单独的应用容器。在工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。Compose 允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。 Docker-Compose 项目由 Python 编写,调用 Docker 服务提供的 API 来对容器进行管理。因此,只要所操作的平台支持 Docker API,就可以在其上利用 Compose 来进行编排管理。

通俗一点的说法:

  • 当我们使用 Docker 来运行应用程序时,通常会涉及多个容器。例如,一个应用程序可能需要一个数据库容器、一个 Web 服务器容器和一个缓存容器。这些容器之间需要相互通信和协调工作。
  • Docker Compose 就像是一个指挥官,它可以帮助我们一次性启动、停止和管理这些容器,确保它们能够协同工作。你可以将 Docker Compose 文件看作是一个规划图,告诉 Docker 如何构建和配置这个容器群。
  • 比方说,你的应用程序需要一个数据库容器和一个 Web 服务器容器。你可以使用 Docker Compose 文件来描述这两个容器,指定它们使用的镜像、端口映射、环境变量等配置信息。然后,你只需要运行一个命令,Docker Compose 就会帮你自动创建和管理这两个容器。
  • Docker Compose 文件使用一种叫做 YAML 的语言来编写,它非常简洁易懂。你只需要定义你需要的服务(容器),以及它们之间的关系和配置。Docker Compose 会根据这个文件来创建、连接和管理这些容器,确保它们可以相互通信并顺利运行。
  • 这种方式让我们更容易管理复杂的应用程序环境,因为我们可以将所有容器的配置集中在一个文件中,并使用简单的命令来启动、停止和管理它们。而不需要手动一个个去运行 Docker 命令来管理每个容器。

总而言之,Docker Compose 是一个简化多容器 Docker 应用程序管理的工具,它通过使用一个配置文件来定义和管理多个容器的运行方式,使得应用程序的部署和管理变得更加简单和高效。

2. docker-compose 安装

  • 运行以下命令安装 Docker Compose:
# 要安装其他版本的 Compose,请替换 1.24.1
curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

注:直接使用上面这条命令的话,一方面,下载速度会非常慢;另一方面,可能文件下载到一部分会提示下载失败。所以综合上述原因,我们可以在浏览器中将上面的文件下载好,然后将文件传输到虚拟机(我这里是 Ubuntu)中,然后用下面这条命令将此文件改名:

mv /root/docker-compose-linux-x86_64 /usr/local/bin/docker-compose

解释:上述命令中的 /root/docker-compose-linux-x86_64 是我的虚拟机中下载好的文件存放的路径,docker-compose-linux-x86_64 是下载的文件的名字。

  • 上面的命令输入之后,等待下载完成。将可执行权限应用于二进制文件:
chmod +x /usr/local/bin/docker-compose
  • 创建软连接:
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
  • 测试是否安装成功:
# 查看 docker-compose 版本
docker-compose --version

在这里插入图片描述

3. docker-compose 卸载

  • 如果是二进制包方式安装的,删除二进制文件即可:
rm /usr/local/bin/docker-compose
  • 如果通过 Python pip 工具安装的,则执行如下命令删除:
pip uninstall docker-compose

2. docker-compose 常用命令

1. docker-compose 命令格式

  • 我们可以使用下面的命令查看:
docker-compose --help

在这里插入图片描述

  • 可以看到 docker-compose 的命令格式为:
docker compose [OPTIONS] COMMAND

2. docker-compose up

  • 用于启动使用 Docker Compose 编排的多个容器。它会根据指定的配置文件(默认为 docker-compose.yml)创建并运行多个容器,使它们协同工作。

在这里插入图片描述

  • 可以看到,命令格式为:
docker compose up [OPTIONS] [SERVICE...]
  • 参数说明:
参数 说明
-d 在后台运行服务容器
–no-color 不使用颜色来区分不同的服务的控制输出
–no-deps 不启动服务所链接的容器
–force-recreate 强制重新创建容器,不能与 –no-recreate 同时使用
–no-recreate 如果容器已经存在,则不重新创建,不能与 –force-recreate 同时使用
–no-build 不自动构建缺失的服务镜像
–build 在启动容器前构建服务镜像
–abort-on-container-exit 停止所有容器,如果任何一个容器被停止,不能与-d同时使用
-t,-–timeout int 停止容器时候的超时(默认为 10 秒)
–remove-orphans 删除服务中没有在 compose 文件中定义的容器
-f 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定
  • 举例:
# 启动所有服务
docker-compose up

# 在后台启动所有服务
docker-compose up -d

# 在后台所有启动服务,指定编排文件
docker-compose -f docker-compose.yml up -d

注:直接在某个目录输入命令 docker-compose psdocker-compose up,可能会报错:no configuration file provided: not found。这个错误提示表明在当前目录下找不到 Docker Compose 的配置文件(docker-compose.ymldocker-compose.yaml)。docker-compose 命令默认会在当前目录下查找配置文件来执行相应的操作。所以说,解决方式很简单:只要切换到 docker-compose 配置文件所在的目录(或者是 docker-compose 的安装目录)即可。

3. docker-compose ps

  • 用于列出由 Docker Compose 管理的容器的状态。它会显示与配置文件中定义的服务(服务由一个或多个容器组成)相关联的容器的详细信息。

在这里插入图片描述

  • 可以看到,命令格式为:
docker compose ps [OPTIONS] [SERVICE...]
  • 举例:
# 基本用法
docker-compose ps

默认情况下,它会在当前目录下查找名为 docker-compose.yml 或 docker-compose.yaml 的配置文件,并显示与该文件中定义的服务相关联的容器的状态信息。

在这里插入图片描述

解释:如上图所示,直接在某个目录输入命令 docker-compose psdocker-compose up,可能会报错:no configuration file provided: not found。这个错误提示表明在当前目录下找不到 Docker Compose 的配置文件(docker-compose.ymldocker-compose.yaml)。docker-compose 命令默认会在当前目录下查找配置文件来执行相应的操作。所以说,解决方式很简单:只要切换到 docker-compose 配置文件所在的目录(或者是 docker-compose 的安装目录)即可。

# 指定配置文件
docker-compose -f <file> ps

使用 -f 选项可以指定要使用的配置文件。例如,要使用名为 my-compose.yml 的配置文件,可以运行 docker-compose -f my-compose.yml ps

# 显示详细信息
docker-compose ps -a

使用 -a 选项可以显示所有容器的详细信息,包括已停止的容器。默认情况下,它只显示正在运行的容器。

4. docker-compose stop

  • 停止正在运行的容器,可以通过 docker-compose start 再次启动。

在这里插入图片描述

  • 可以看到,命令格式为:
docker compose stop [OPTIONS] [SERVICE...]

5. docker-compose down

  • 用于停止和移除由 docker-compose up 创建的容器、网络和卷。
  • 使用 docker-compose down 命令会执行以下操作:
    • 停止由 docker-compose up 启动的容器。
    • 移除这些容器。
    • 移除关联的网络。
    • 移除关联的卷。

在这里插入图片描述

  • 可以看到,命令格式为:
docker compose down [OPTIONS]
  • 参数说明:
参数 说明
–rmi type 移除关联的镜像。type 参数可以是 “all”(移除所有镜像)、“local”(仅移除本地镜像)或 “none”(不移除镜像)。默认情况下,不会删除镜像。
-v--volumes 除关联的卷。默认情况下,docker-compose down 不会删除卷,使用该选项可以移除关联的卷。
--remove-orphans 移除孤立的容器。如果在 docker-compose.yml 文件中定义了服务,但它们不再运行,使用该选项可以移除这些孤立的容器。

6. docker-compose logs

  • 用于查看由 docker-compose 启动的服务的日志。

在这里插入图片描述

  • 可以看到,命令格式为:
docker compose logs [OPTIONS] [SERVICE...]
  • 参数说明:
参数 说明
-f--follow 实时输出日志信息,类似于 tail -f 命令的功能。可以持续查看日志的输出,直到手动停止。
--tail <num> 仅显示最后 <num> 行的日志信息。可以使用正整数作为参数,例如 --tail 100 将只显示最后 100 行。
-t--timestamps 显示时间戳信息。
--no-color 禁止输出颜色编码,以纯文本形式显示日志。
  • 用法举例:

在项目目录中运行命令:打开终端,进入包含 docker-compose.yml 文件的项目目录,然后运行 docker-compose logs 命令。

cd /path/to/project
docker-compose logs

指定服务名称:默认情况下,docker-compose logs 会显示所有服务的日志。如果只想查看特定服务的日志,可以指定服务名称作为参数。

docker-compose logs <service1> <service2>

其中,<service1><service2> 是要查看日志的服务的名称。

7. docker-compose build

  • 构建(重新构建)项目中的服务容器。

在这里插入图片描述

  • 可以看到,命令格式为:
docker compose build [OPTIONS] [SERVICE...]
  • 参数说明:
参数 说明
-f--file 指定自定义的 Compose 文件,而不使用默认的 docker-compose.yml 文件。
  • 用法举例:

在项目目录中运行命令:打开终端,进入包含 docker-compose.yml 文件的项目目录,然后运行 docker-compose build 命令。

cd /path/to/project
docker-compose build

指定服务名称:默认情况下,docker-compose build 会构建项目中的所有服务的镜像。如果只想构建特定服务的镜像,可以指定服务名称作为参数。

docker-compose build <service1> <service2>

其中,<service1><service2> 是要构建镜像的服务的名称。

8. docker-compose pull

  • 拉取服务依赖的镜像。

在这里插入图片描述

  • 可以看到,命令格式为:
docker compose pull [OPTIONS] [SERVICE...]
  • 参数说明:
参数 说明
–ignore-pull-failures 忽略拉取镜像过程中的错误
-q--quiet 只显示镜像拉取过程中的进度信息,不显示详细输出。

9. docker-compose restart

  • 用于重新启动由 docker-compose 启动的服务容器。

在这里插入图片描述

  • 可以看到,命令格式为:
docker compose restart [OPTIONS] [SERVICE...]

10. docker-compose rm

  • 删除所有(停止状态的)服务容器。

在这里插入图片描述

  • 可以看到,命令格式为:
docker compose rm [OPTIONS] [SERVICE...]
  • 参数说明:
参数 说明
-f--force 强制删除容器,即使它正在运行或附加到终端。
-s--stop 在删除容器之前停止它们。
-v 删除容器所挂载的数据卷
  • docker-compose rm 删除所有(停止状态的)服务容器。推荐先执行 docker-compose stop 命令来停止容器。
  • 使用 docker-compose rm 命令删除容器将不会删除相关的镜像、网络或卷。要删除这些相关的资源,可以使用其他 Docker 命令,例如 docker image rm 来删除镜像,docker network rm 来删除网络,docker volume rm 来删除卷。

11. docker-compose start

  • 用于启动由 docker-compose 管理的服务容器。

在这里插入图片描述

  • 可以看到,命令格式为:
docker compose start [SERVICE...]
  • docker-compose start 命令将会以后台模式启动服务容器,即容器将在后台运行并在终端中不会显示输出。如果要查看容器的日志输出,可以使用 docker-compose logs 命令。
  • 此命令对于重新启动已经停止的服务容器是有用的,特别是在更新配置或镜像后使更改生效。如果只是想停止服务容器,而不需要重新加载配置或镜像,可以使用 docker-compose stop 命令。

12. docker-compose run

  • 在指定服务上执行一个命令。

在这里插入图片描述

  • 可以看到,命令格式为:
docker compose run [OPTIONS] SERVICE [COMMAND] [ARGS...]
  • 用法示例:

在项目目录中运行命令:打开终端,进入包含 docker-compose.yml 文件的项目目录,然后运行 docker-compose run 命令。

cd /path/to/project
docker-compose run <service> <command>

其中,<service> 是在 docker-compose.yml 文件中定义的服务名称,用于指定要在其中运行命令的容器。<command> 是要在容器中执行的命令。

附加到终端:默认情况下,docker-compose run 命令会启动一个新容器并在其中运行命令,然后退出。如果想要在容器中进行交互操作,可以使用 -it 选项将命令附加到终端。

docker-compose run -it <service> <command>

在这种情况下,命令将在容器的交互模式下运行,并且可以与容器进行交互。

13. docker-compose scale

  • docker-compose scale 命令用于扩展或缩小 Docker Compose 中的服务实例数量。

  • 使用 docker-compose scale 命令可以指定要启动的服务实例数量,从而创建多个容器实例来处理负载或增加服务的可用性。

  • 用法示例:

在项目目录中运行命令:打开终端,进入包含 docker-compose.yml 文件的项目目录,然后运行 docker-compose scale 命令。

cd /path/to/project
docker-compose scale <service1>=<num1> <service2>=<num2> ...

其中,<service1><service2> 是在 docker-compose.yml 文件中定义的服务名称,用于指定要扩展或缩小实例数量的服务。<num1><num2> 是要设置的实例数量。

docker-compose scale web=3 worker=2

这个例子将会扩展 web 服务为 3 个实例,worker 服务为 2 个实例。

动态扩展:如果希望自动在扩大容器数量时调整负载均衡策略,可以在 docker-compose.yml 文件中为服务使用适当的负载均衡器(如 Nginx 或 Traefik)。

  • 需要注意的是,服务的扩展和缩小是基于启动配置中定义的服务容器镜像进行的。如果在 docker-compose.yml 文件中定义了多个容器,每个容器都将使用相同的镜像来创建与原始服务相同的副本。

14. docker-compose pause

  • docker-compose pause 是一个 Docker Compose 命令,用于暂停运行中的服务容器。
  • 使用 docker-compose pause 命令可以暂停正在运行的服务容器,使其停止执行。这将暂停容器中的所有进程,包括应用程序和服务。

在这里插入图片描述

  • 可以看到,命令格式为:
docker compose pause [SERVICE...]

15. docker-compose kill

  • docker-compose kill 是一个 Docker Compose 命令,用于停止运行中的服务容器。它会立即终止容器的运行,类似于强制执行 Ctrl+C 中断。
  • 使用 docker-compose kill 命令可以强制终止正在运行的服务容器,即使容器内部的进程可能还没有完成或正在执行。

在这里插入图片描述

  • 可以看到,命令格式为:
docker compose kill [OPTIONS] [SERVICE...]

16. dokcer-compose config

  • docker-compose config 是一个 Docker Compose 命令,用于验证和显示由 docker-compose.yml 文件定义的服务配置。
  • 使用 docker-compose config 命令可以检查 Docker Compose 配置文件的语法正确性,并显示所定义的服务和它们的配置。它可以帮助你在运行 Docker Compose 之前查看配置是否正确。

在这里插入图片描述

  • 可以看到,命令格式为:
docker compose config [OPTIONS] [SERVICE...]

17. docker-compose create

  • docker-compose create 命令用于创建在 Docker Compose 文件中定义的服务的容器,但不会启动这些容器。它主要用于预先创建容器,以便稍后通过 docker-compose startdocker-compose up 命令启动这些容器。

在这里插入图片描述

  • 可以看到,命令格式为:
docker compose create [OPTIONS] [SERVICE...]

18. docker-compose exec

  • 用于在运行中的服务容器中执行命令。它允许你与正在运行的容器进行交互并在其内部执行命令。
  • 使用 docker-compose exec 命令可以进入指定的服务容器,并在容器的上下文中执行给定的命令。

在这里插入图片描述

  • 可以看到,命令格式为:
docker compose exec [OPTIONS] SERVICE COMMAND [ARGS...]
  • 用法示例:
# 这个例子将会进入名为 web 的服务容器,并在容器内执行 ls -l 命令来列出文件和目录。
docker-compose exec web ls -l

19. docker-compose port

  • 用于查看由 Docker Compose 管理的服务容器的端口映射情况。它允许你查看服务容器的公开端口与主机上的端口之间的映射关系。
  • 使用 docker-compose port 命令可以方便地查看服务容器的端口映射,以便了解服务容器内部应用程序的可访问地址。

在这里插入图片描述

  • 可以看到,命令格式为:
docker compose port [OPTIONS] SERVICE PRIVATE_PORT
  • 用法示例:
# 这个例子将会显示名为 web 的服务容器绑定到宿主机上的端口 80 的映射。
docker-compose port web 80

20. docker-compose push

  • 用于将 Docker Compose 文件中定义的服务的镜像推送到注册表(Registry)。它允许你将本地构建的镜像推送到远程注册表,供其他人或其他环境使用。
  • 使用 docker-compose push 命令可以方便地将镜像上传到注册表,以便在其他环境中部署和使用。

在这里插入图片描述

  • 可以看到,命令格式为:
docker compose push [OPTIONS] [SERVICE...]
  • 用法示例:
# 这个例子将会推送名为 web 的服务的镜像到注册表。
docker-compose push web

21. docker-compose unpause

  • 用于取消暂停一个或多个由 Docker Compose 管理的服务容器。它允许你恢复被暂停的服务容器的正常运行状态。
  • 使用 docker-compose unpause 命令可以恢复被暂停的服务容器,使其继续执行应该执行的操作。

在这里插入图片描述

  • 可以看到,命令格式为:
docker compose unpause [SERVICE...]
  • 用法示例:
# 这个例子将会取消暂停名为 web 和 db 的服务容器。
docker-compose unpause web db

猜你喜欢

转载自blog.csdn.net/m0_51913750/article/details/131743170