网站搜索

在 Linux 中开始使用 Docker Compose


Docker Compose 是一个在 Linux 中定义和运行多容器 Docker 应用程序的工具。通过 Compose,我们使用 YAML 文件来配置应用程序的服务。然后我们使用单个命令从配置中创建并启动所有服务。这是一个简单的图解,展示了 Docker compose 的工作原理。

Docker compose 的工作原理 - 图示

Docker Compose 基本上是一个三步过程:

  1. 首先,我们需要使用Dockerfile定义应用程序环境,以便可以再次重用。
  2. 其次,我们在 docker-compose.yml 中定义组成应用程序的服务,以便它们可以在隔离的环境中一起运行。
  3. 最后,我们运行 docker-compose up 命令,Compose 将启动并运行您的整个应用程序。

在 Linux 中开始使用 Docker Compose

Docker Compose 可以通过两种方式安装。您可以在以下链接的“安装 Docker Compose”部分下找到安装说明。

  • 如何在 Ubuntu 中安装 Docker
  • 如何在CentOS中安装Docker

安装完成后,使用命令检查Docker compose的版本:

docker-compose -version

或者,

docker-compose -v

或者,

docker-compose --version

检查 docker compose 版本

要获得帮助,只需运行:

docker-compose -help

该命令将列出 docker compose 可以执行的命令。

docker 撰写帮助

现在让我们以一个简单的 docker compose 文件为例。这是我的撰写文件的内容。

示例 docker compose 文件

上面的 docker compose 文件是一个最基本的文件,用于了解 compose 文件内的基本内容。

我们可以使用命令检查文件的有效性:

docker-compose config

检查 docker compose 文件的有效性

如果您在 docker compose 文件中提供了错误的版本,那么它会给您一条错误消息。

Docker 撰写文件错误消息

现在让我们使用命令运行撰写文件:

docker-compose up -d

它将用单个命令启动所有服务。

运行 docker 撰写

要列出由 compose 文件创建的正在运行的容器,请运行:

docker-compose ps

列出正在运行的 docker 容器

我们可以随时使用以下命令关闭该应用程序:

docker-compose down

停止docker容器

我们还可以为 nginx 分配不同的端口,例如 8181。

为此,只需在 compose 文件中定义端口,如下图所示。

定义nginx容器端口

现在 nginx 暴露到端口 8181。让我们启动容器并检查 Nginx 是否在 8181 端口上运行。

启动nginx容器

打开浏览器并验证它是否在 8181 端口上运行。

在网络浏览器中测试 nginx 容器

如果您想扩展服务,可以使用命令来完成:

docker-compose up -d --scale database=3

使用 docker compose 扩展服务

要显示正在运行的服务,请运行:

docker-compose top

使用 docker compose 显示正在运行的服务

要停止,就要开始。立即重新启动整个服务,命令为:

docker-compose stop
docker-compose start
docker-compose restart

我们可以使用命令查看服务日志:

docker-compose logs

显示服务日志

docker-compose 中的网络

Docker Compose 默认为您的应用程序设置一个网络。每个容器都会加入默认网络,并且容器将能够在该默认网络上进行通信。

但是,如果您不需要默认网络,则可以使用 compose 创建新网络。

为了本指南的目的,我使用以下三个文件:

  1. Dockerfile
  2. docker-compose.yml
  3. 服务器.py

以下是 Dockerfile 的内容:

dockerfile 内容

docker-compose.yml 的内容:

Docker 撰写文件内容

server.py 的内容:

应用程序文件内容

现在使用命令构建图像:

docker-compose build

构建完成后,您将看到以下输出:

构建docker镜像

可以看到镜像已经成功构建了。您可以使用命令验证它:

docker images

列出 docker 镜像

正如您在上面的输出中看到的,创建了一个名为 image1 的 Docker 映像。

现在运行撰写文件:

docker-compose up -d

运行 docker 撰写文件

使用命令检查新网络是否创建:

docker network ls

检查docker网络

从上面的屏幕截图中,我们可以确认已创建一个名为dc_network_my-network的新网络。

让我们使用“docker ps”命令检查容器是否正在运行:

docker ps

docker ps 命令输出

是的,容器正在运行!

最后使用curl命令运行应用程序代码文件(server.py):

curl localhost:15001

或者,

curl 10.26.35.244:15001

应用程序输出

我们正在获取输出 - Hello World from node 1!,该输出写入 server.py 文件中。意味着它有效!

建议阅读:

  • 将 Docker 运行命令转换为 Docker-Compose 文件
  • 解释 Docker 网络概念
  • 通过示例解释 Docker 卷
  • 如何自动更新正在运行的 Docker 容器
  • ctop – Linux 容器的命令行监控工具
  • Portainer – 管理 Docker 的最简单方法
  • PiCluster – 一个简单的、基于 Web 的 Docker 管理应用程序
  • Dockly – 从终端管理 Docker 容器

作者简介:

Dhruv Tiwari 是一名 DevOps 工程师,他喜欢自动化事物,喜欢大规模使用 Linux,并梦想有一天系统足够智能,永远不需要登录 Linux 机器。 CI/CD 从源代码到代码部署再到生产的旅程。

资源:

  • Docker Compose 文档