已编辑 5 几个月前 通过 ExtremeHow 编辑团队
Docker容器应用程序部署Docker Compose编排配置脚本开发与运维命令行多容器
翻译更新 5 几个月前
Docker Compose是一种用于定义和运行多容器Docker应用程序的工具。使用Docker Compose,您可以使用YAML文件来配置应用程序的服务,然后通过一条命令创建并启动所有服务。这对于处理包含许多链接服务的复杂应用程序非常有用。本指南的目的是详细说明如何在Linux上使用Docker Compose。
在深入了解Docker Compose之前,了解Docker是什么很重要。Docker是一个使开发人员和系统管理员能够将应用程序打包为容器的平台——标准化的可执行组件,结合了应用程序源代码与运行该代码所需的操作系统库和依赖项,使其能够在任何环境中运行。
Docker Compose进一步扩展,允许您将多个Docker容器配置并启动为单个服务。这意味着您可以使用一个简单的文件docker-compose.yml
来管理应用程序的所有依赖项。该文件包含运行哪个镜像、暴露哪些端口、卷映射等信息。
使用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的核心。在这里,您定义所有服务(基本上是应用程序的容器)及其之间的交互方式。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。它定义了两个服务,web
和database
。web
服务使用Nginx镜像并将容器的80端口映射到主机的80端口。database
服务使用指定了root密码的MySQL镜像。
配置docker-compose.yml
文件后,您的多服务应用程序可以通过一个简单的命令运行。导航到包含docker-compose.yml
文件的目录并运行:
docker-compose up
docker-compose up
命令会在当前目录寻找docker-compose.yml
文件,创建所需的镜像(如果本地不可用),并启动定义的服务。
如果您希望在后台(隔离模式)运行应用程序,可以使用-d
选项:
docker-compose up -d
Docker Compose提供了多个命令来帮助您管理环境:
docker-compose ps
:显示在compose文件中定义的服务的状态。docker-compose start
:启动服务的现有容器。docker-compose stop
:停止正在运行的容器而不移除它们。docker-compose down
:停止并移除docker-compose.yml
文件中定义的所有容器。docker-compose logs
:检索服务的日志。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的一个强大功能是缩放服务的能力。在开发环境中模拟更真实的条件时,这尤其有用。您可以使用--scale
选项扩大服务规模。
docker-compose up --scale web=3
上述命令将启动三个web
服务实例。
您可以使用docker-compose exec
在正在运行的服务内执行任意命令:
docker-compose exec web bash
此命令将在正在运行的web
服务容器内打开一个bash shell。
默认情况下,Docker Compose为您的服务创建一个默认网络。但是,您可以通过定义一个网络并在每个服务中指定它,将所有服务绑定到同一个网络:
version: '3.8'
services:
web:
image: nginx:latest
networks:
- custom-network
database:
image: mysql:5.7
networks:
- custom-network
networks:
custom-network:
web
和database
服务都连接到custom-network
,允许它们独立通信。
Docker Compose是一种强大的工具,可以简化多容器Docker应用程序的管理过程。通过在docker-compose.yml
文件中定义服务,您可以快速部署和管理应用程序的堆栈。有效使用Docker Compose的关键是理解docker-compose.yml
文件的配置选项,包括服务、卷和网络。
本综合指南提供了在Linux上设置Docker和Docker Compose、创建Compose文件以及管理应用程序的概述。通过这些知识,您可以有效利用Docker Compose来处理复杂的基于Linux的环境。通过自己的应用程序进行实践,以便更加熟悉并定制Docker Compose配置以满足特定需求。
如果你发现文章内容有误, 您可以