视窗苹果电脑软件设置安全生产力Linux安卓性能配置苹果自定义设备管理iPhone设置 全部

如何在Linux上使用Docker Compose

已编辑 5 几个月前 通过 ExtremeHow 编辑团队

Docker容器应用程序部署Docker Compose编排配置脚本开发与运维命令行多容器

如何在Linux上使用Docker Compose

翻译更新 5 几个月前

Docker Compose是一种用于定义和运行多容器Docker应用程序的工具。使用Docker Compose,您可以使用YAML文件来配置应用程序的服务,然后通过一条命令创建并启动所有服务。这对于处理包含许多链接服务的复杂应用程序非常有用。本指南的目的是详细说明如何在Linux上使用Docker Compose。

了解Docker和Docker Compose

在深入了解Docker Compose之前,了解Docker是什么很重要。Docker是一个使开发人员和系统管理员能够将应用程序打包为容器的平台——标准化的可执行组件,结合了应用程序源代码与运行该代码所需的操作系统库和依赖项,使其能够在任何环境中运行。

Docker Compose进一步扩展,允许您将多个Docker容器配置并启动为单个服务。这意味着您可以使用一个简单的文件docker-compose.yml来管理应用程序的所有依赖项。该文件包含运行哪个镜像、暴露哪些端口、卷映射等信息。

在Linux上设置Docker和Docker Compose

使用Docker Compose的第一步是确保Docker已安装并在Linux机器上运行。大多数现代Linux发行版的官方存储库中都有Docker,但您也可以从Docker的官方存储库安装,以获取最新版本。

# 更新apt软件包索引,并安装软件包以允许apt通过HTTPS使用存储库
sudo apt-get update -y
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common -y

# 添加Docker的官方GPG密钥并验证
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# 设置稳定的存储库
sudo add-apt-repository \
"deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

# 安装Docker CE
sudo apt-get update -y
sudo apt-get install docker-ce docker-ce-cli containerd.io -y

# 验证Docker安装
sudo docker run hello-world

Docker安装后,下一步是安装Docker Compose。与Docker不同,Compose是单独的工具。您可以从GitHub发布页面下载Docker Compose。

# 下载当前稳定版本的Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 将二进制文件设置为可执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 验证Docker Compose是否正确安装
docker-compose --version

了解docker-compose.yml文件

docker-compose.yml文件是使用Docker Compose的核心。在这里,您定义所有服务(基本上是应用程序的容器)及其之间的交互方式。docker-compose.yml文件的结构相当简单。通常从定义使用的Compose版本开始,然后是服务列表。

以下是docker-compose.yml文件的基本示例:

version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
database:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example

在上面的示例中,compose文件使用版本3.8。它定义了两个服务,webdatabaseweb服务使用Nginx镜像并将容器的80端口映射到主机的80端口。database服务使用指定了root密码的MySQL镜像。

使用Docker Compose运行应用程序

配置docker-compose.yml文件后,您的多服务应用程序可以通过一个简单的命令运行。导航到包含docker-compose.yml文件的目录并运行:

docker-compose up

docker-compose up命令会在当前目录寻找docker-compose.yml文件,创建所需的镜像(如果本地不可用),并启动定义的服务。

如果您希望在后台(隔离模式)运行应用程序,可以使用-d选项:

docker-compose up -d

管理您的Docker Compose环境

Docker Compose提供了多个命令来帮助您管理环境:

  1. docker-compose ps:显示在compose文件中定义的服务的状态。
  2. docker-compose start:启动服务的现有容器。
  3. docker-compose stop:停止正在运行的容器而不移除它们。
  4. docker-compose down:停止并移除docker-compose.yml文件中定义的所有容器。
  5. docker-compose logs:检索服务的日志。

在Docker Compose中使用卷和网络

Docker Compose还允许您在docker-compose.yml文件中定义卷和网络。卷用于持久化数据,网络帮助服务之间的通信。

要定义卷,请在服务部分下添加以下内容:

services:
database:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql

volumes:
db_data:

此配置创建了一个名为db_data的命名卷,并将其挂载在数据库服务容器内的/var/lib/mysql上,用于存储MySQL数据。

网络也可以进行自定义:

services:
frontend:
image: node:14
networks:
- frontend-network
backend:
image: node:14
networks:
- backend-network

networks:
frontend-network:
backend-network:

使用Docker Compose进行服务扩展

Docker Compose的一个强大功能是缩放服务的能力。在开发环境中模拟更真实的条件时,这尤其有用。您可以使用--scale选项扩大服务规模。

docker-compose up --scale web=3

上述命令将启动三个web服务实例。

在容器内执行命令

您可以使用docker-compose exec在正在运行的服务内执行任意命令:

docker-compose exec web bash

此命令将在正在运行的web服务容器内打开一个bash shell。

将Docker Compose绑定到单个网络

默认情况下,Docker Compose为您的服务创建一个默认网络。但是,您可以通过定义一个网络并在每个服务中指定它,将所有服务绑定到同一个网络:

version: '3.8'
services:
web:
image: nginx:latest
networks:
- custom-network
database:
image: mysql:5.7
networks:
- custom-network

networks:
custom-network:

webdatabase服务都连接到custom-network,允许它们独立通信。

结论

Docker Compose是一种强大的工具,可以简化多容器Docker应用程序的管理过程。通过在docker-compose.yml文件中定义服务,您可以快速部署和管理应用程序的堆栈。有效使用Docker Compose的关键是理解docker-compose.yml文件的配置选项,包括服务、卷和网络。

本综合指南提供了在Linux上设置Docker和Docker Compose、创建Compose文件以及管理应用程序的概述。通过这些知识,您可以有效利用Docker Compose来处理复杂的基于Linux的环境。通过自己的应用程序进行实践,以便更加熟悉并定制Docker Compose配置以满足特定需求。

如果你发现文章内容有误, 您可以


评论