返回博客

如何在 Ubuntu 20.04 上安装和配置 Docker Compose

如何在 Ubuntu 20.04 上安装和配置 Docker Compose

介绍

容器化近年来在软件技术领域势头强劲。这可以归功于Docker,它是一个简化容器内进程管理的容器平台。

容器是轻量级、虚拟化、便携式、软件定义的标准化环境,允许软件与物理宿主机上运行的其他软件隔离运行。这种便携性特征允许开发人员将其应用程序模块化为隔离的服务。此外,它还可以独立提供服务,从而为扩展提供了空间。

虽然将应用程序拆分为多个服务确实很棒,但它也带来了管理多个容器的开销。您必须确保它们能够通信、同时启动和关闭。多亏了一个名为Docker Compose的工具,这变得轻而易举。Docker Compose 允许开发人员使用定义在YAML文件中的规则来运行多容器 Docker 应用程序。该 YAML 文件包含应用程序服务的定义,以及它们如何共享数据卷和网络。一旦定义了服务,您就可以使用单个命令启动所有服务。在本教程中,我们将向您展示如何在 Ubuntu 20.04 上安装、配置和开始使用 Docker Compose。

前提条件

步骤 1:安装 Docker Compose

我们将从其官方 GitHub 仓库下载最新稳定版本的 Docker Compose。您可以从发布页面了解最新版本,在撰写本教程时,最新版本是1.28.5.

首先,使用非 root sudo 用户登录您的 Ubuntu 服务器并输入以下命令。它会下载最新版本 (1.28.5) 并将可执行文件保存到/usr/local/bin/docker-compose目录中。这使得它可以在全局作为 docker-compose 访问:

下载完成后,输入以下命令为 docker-compose 命令设置适当的权限以使其可执行:

现在,通过运行以下命令来验证安装是否成功以及该命令是否可以被调用:

您应该会得到类似以下的输出:

docker compose version

这确认了 Docker Compose 已成功安装在您的系统上。

步骤 2:创建 docker-compose.yml 文件

为了帮助您理解如何使用docker-compose.yml,,我们将使用来自Nginx 镜像的官方Docker Hub配置一个 Web 服务器环境。部署完成后,我们应该能够从容器中提供一个基本的 HTML 页面。

我们将在主文件夹中创建我们的工作目录,我们将在其中进行工作。输入以下命令创建该目录:

接下来,进入该目录:

进入目录后,创建一个应用程序文件夹,该文件夹将作为Nginx环境的文档根目录。我们可以将此文件夹命名为app:

  • 创建 HTML 页面

让我们使用nano文本编辑器在 app 文件夹中创建 index.html文件:

接下来,将以下 HTML 代码添加到文件中:

要保存文件,请按 CTRL +O,然后按回车键(ENTER)。接着,使用 CTRL +X 关闭。接下来,我们将在项目根目录下创建 docker-compose.yml 文件。

  • 使用 docker-compose 托管 HTML 页面

接下来,输入以下命令以使用 nano 编辑器打开文件:

之后,在文件中添加以下代码片段:

docker-compose.yml 文件以版本号开始,该版本号告诉 Docker Compose 我们正在使用哪个配置版本。请点击此链接以了解更多关于 Docker Compose 版本控制.

在版本号之后,我们有 services 块,其中包含构成环境的服务。在本教程中,我们只指定了一个名为 webserver 的服务。 webserver 服务将使用 nginx:alpine 镜像。我们还定义了端口重定向 8000:80。这意味着来自宿主机上端口 8000 的所有请求都将被重定向到 webserver 容器的端口 80,Nginx 正在该端口上运行。

volumes 指令允许您在宿主机和容器之间创建一个 共享数据卷,我们可以使用它来持久化数据。在我们的 yml 代码片段中,我们将本地的 app 文件夹与容器共享。在容器内部,它将被放置在 /usr/share/nginx/html 位置。因此,它覆盖了 Nginx 的默认文档根目录。您现在可以保存并关闭该文件了。

到目前为止,您已经创建了示例 HTML 网页和 docker-compose.yml file 文件,其中包含构建容器化 Web 服务器环境的指令。让我们在下一步中看看如何启动此设置。

第 3 步:执行 Docker Compose 命令

在这一步中,我们将运行命令来启动我们的容器化环境。以下是初始化 Docker 镜像下载过程、为 webserver 服务创建容器并在后台启动容器化环境的单个命令:

Docker 的设计旨在快速高效,因此,当您运行上述命令时,它首先会检查您的本地系统是否存在定义的镜像。如果缺失,它将从 Docker Hub 仓库中获取。它应该显示类似于以下内容的输出:

 compose up

当命令执行完毕后,它将启动在后台运行的容器环境。您可以使用以下命令验证它是否正在运行:

您应该会得到类似的输出:

 compose ps

如果您导航到服务器的 IP 地址或域名并加上端口 8000,即 server_domain_or_IP:8000 您应该能够看到我们创建的示例 HTML 页面:

docker compose webpage

如果您还记得,我们在容器和宿主机系统之间设置了一个共享数据卷。这使容器中的文件与宿主机系统中的文件保持同步。因此,如果您对 index.html 文件进行更改,它会自动与容器同步,并在您在浏览器中重新加载页面时反映出来。您可以使用 nano 编辑器进行尝试。让我们在下一步中学习更多命令。

第 4 步:用于管理容器环境的其他 Docker Compose 命令

现在您已经使用单个 docker-compose-up 命令成功部署了网页,让我们看看一些在管理容器化环境时可能有用的其他命令。

我们将从 logs 命令开始。在排查应用程序故障时,日志可能至关重要。首先,运行以下命令以查看 Nginx 容器生成的日志:

以下是日志的示例输出:

 logs

您可以使用以下命令暂停环境执行,而无需更改容器的状态:

 compose pause

接下来,要取消暂停或恢复执行,请使用以下命令:

docker compose unpause

您可能希望停止容器而不销毁其数据。为此,请使用以下命令:

stop

要销毁与容器化环境关联的容器、网络和数据卷,请使用以下命令:

docker compose down

请记住,上述命令不会删除 Docker Compose 用于启动环境的基础镜像。这可以确保在您启动环境时构建速度更快,因为它会检查本地计算机中是否存在匹配的镜像。如果您想完全删除基础镜像,必须在命令中指定它。在我们的示例中,我们可以删除 nginx:alpine 镜像,使用以下命令:

 image remove

最后,您可以在官方的 Docker Compose 命令行参考 文档中找到更多命令。

总结

在本教程中,您在 Ubuntu 20.04 上安装了 Docker Compose,创建了一个基于 Nginx Web 服务器镜像的容器化环境,并学习了如何使用 Docker Compose 命令来管理各种服务。

如果您想了解如何部署一个依赖于多个容器的真实动态应用程序,请阅读我们的教程:使用 Docker Compose 部署 Laravel、Nginx 和 MySQL。您也可以从官方的 Docker Compose 文档.

中找到 docker-compose 命令的完整列表。祝您使用愉快!

author

Pranay Kapgate

作者 · CloudSigma

Preslav Dobrev 是 CloudSigma 的创意设计师,专注于通过传统和创新营销渠道打造一致的企业形象。他擅长将艺术愿景与战略营销相融合,创造具有影响力的品牌叙事。

评论

暂无评论。发表第一条评论吧。