如何在 Ubuntu 22.04 上部署 Docker Compose 多容器应用教程

简介

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它允许你在单个 YAML 文件中定义应用程序的服务、网络和卷,从而更轻松地管理和扩展复杂的应用程序。

本教程的目标是手把手教你如何在 Linux 服务器上使用 Docker Compose 部署多容器应用程序。

准备工作

  • 准备一台云服务器

若尚未拥有服务器,可前往 雨云官网 https://rainyun.ivwv.site 进行注册,新用户有专属优惠。

安装和配置步骤

第一步:安装 Docker 和 Docker Compose

如果你的服务器上还没有安装 Docker 和 Docker Compose,请按照以下步骤操作:

首先安装 Docker。执行以下命令:

sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \\
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \\
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \\
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update

安装 Docker 包:

sudo apt-get install docker-ce

下载最新版本的 Docker Compose:

sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep -oP '\\"tag_name\\": \\"\\K(.*)(?=\\")')/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

为二进制文件应用可执行权限:

sudo chmod +x /usr/local/bin/docker-compose

验证安装:

docker-compose --version

Docker Compose 帮助管理多容器 Docker 应用程序。我们将使用它来简化 Flask 应用程序的管理。

第二步:创建 Docker Compose YAML 文件

在这一步,你将使用 docker-compose.yml 文件定义你的多容器应用程序。为了演示,我们将部署一个简单的 Web 应用程序,该应用程序由 Nginx Web 服务器和 MySQL 数据库组成。

创建项目目录:

mkdir my_app && cd my_app

创建 docker-compose.yml 文件:

nano docker-compose.yml

docker-compose.yml 文件中定义服务:

这是一个示例配置:

services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
    networks:
      - app-network

  db:
    image: mysql:9.0
    environment:
      MYSQL_ROOT_PASSWORD: example_root_password
      MYSQL_DATABASE: example_db
      MYSQL_USER: example_user
      MYSQL_PASSWORD: example_password
    volumes:
      - db_data:/var/lib/mysql
    networks:
      - app-network

volumes:
  db_data:

networks:
  app-network:
  • services: 定义组成你的应用程序的服务。
  • web: 定义 Nginx Web 服务器服务。
  • db: 定义 MySQL 数据库服务。
  • volumes: 为数据库定义持久数据存储。
  • networks: 定义用于服务间通信的自定义网络。

第三步:部署应用程序

准备好 docker-compose.yml 文件后,你现在可以部署应用程序。

启动服务:

sudo docker-compose up -d
  • d 标志在后台(分离模式)运行容器。

验证容器是否正在运行:

sudo docker-compose ps

你应该看到 webdb 服务正在运行。

测试应用程序:

打开你的浏览器并导航到你服务器的 IP 地址。你应该看到 Nginx 欢迎页面。

第四步:管理应用程序

Docker Compose 使管理多容器应用程序变得容易。

停止应用程序:

sudo docker-compose down

此命令停止并删除 docker-compose.yml 文件中定义的容器、网络和卷。

重启应用程序:

sudo docker-compose up -d

查看日志:

要查看特定服务的日志,请使用:

sudo docker-compose logs <service_name>

例如:

sudo docker-compose logs web

第五步:扩展应用程序

Docker Compose 允许你轻松地扩展你的服务。例如,要将 web 服务扩展为运行三个实例:

sudo docker-compose up -d --scale web=3

Docker Compose 将自动在实例之间进行负载均衡。

高级 Docker Compose 命令

对于那些希望深入了解 Docker Compose 的人,这里有一些高级命令和技术,可以帮助你更有效地优化和管理多容器应用程序。

1. 查看详细的容器信息

要检查有关特定服务的容器的详细信息,请使用以下命令:

sudo docker-compose exec <service_name> docker inspect <container_id>

此命令提供有关容器配置、状态和资源使用的详细 JSON 输出。

2. 运行一次性命令

你可以在正在运行的服务容器中执行一次性命令。例如,要在 web 容器内打开 bash shell:

sudo docker-compose exec web bash

或者在 db 容器内运行 MySQL 命令:

sudo docker-compose exec db mysql -u root -p

注意:输入你在 docker-compose.yml 文件中作为 MYSQL_ROOT_PASSWORD 提到的密码。

3. 构建和重建镜像

如果你的 docker-compose.yml 文件包含构建上下文,你可以使用以下命令构建或重建镜像:

sudo docker-compose build

要重建特定服务:

sudo docker-compose build <service_name>

要强制在不使用缓存的情况下重建:

sudo docker-compose build --no-cache

4. 检查资源使用情况

要监控容器的 CPU、内存和其他资源使用情况:

sudo docker-compose top

此命令显示每个服务的资源使用统计信息。

5. 创建和使用覆盖

Docker Compose 允许你定义一个覆盖文件,通常命名为 docker-compose.override.yml,该文件可用于自定义或扩展基本配置。当你运行 docker-compose up 时,Docker Compose 会自动应用覆盖。

# docker-compose.override.yml

services:
  web:
    environment:
      - DEBUG=true

此覆盖文件在 web 服务中设置了一个额外的环境变量,这对于调试非常有用。

6. 删除孤立容器

当你更新 docker-compose.yml 文件并删除服务时,旧的容器可能会变成“孤立容器”。要删除这些孤立容器:

sudo docker-compose up -d --remove-orphans

这确保你的环境保持干净且没有未使用的容器。

7. 查看配置

要查看 Docker Compose 如何解释你的 docker-compose.yml 文件,请使用:

sudo docker-compose config

此命令验证你的配置并显示 Docker Compose 使用的完整、扩展配置。

8. 使用多个 Compose 文件

你可以一起使用多个 Docker Compose 文件,这对于将基本配置与特定于环境的设置(例如,开发、生产)分开非常有用。

sudo docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d

此命令合并来自 docker-compose.ymldocker-compose.prod.yml 的配置并启动服务。

9. 导出 Docker Compose 日志

如果你需要稍后分析日志,你可以将其导出到文件:

sudo docker-compose logs > logs.txt

此命令捕获来自你所有服务的日志并将其保存到 logs.txt

10. 使用健康检查

你可以在 docker-compose.yml 文件中定义健康检查,以确保你的服务正常运行:

services:
  web:
    image: nginx
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost"]
      interval: 1m30s
      timeout: 10s
      retries: 3

健康检查有助于确保只有健康的容器才能接收流量,从而提高应用程序的可靠性。

结尾

我们已经成功地了解了如何使用 Docker Compose 部署多容器应用程序。此设置具有高度的可扩展性,可以轻松适应更复杂的应用程序。Docker Compose 是一款强大的工具,可简化容器化应用程序的部署和管理,使其成为现代 DevOps 实践的重要组成部分。

高级 Docker Compose 命令为管理和优化你的多容器应用程序提供了强大的功能。通过掌握这些命令,你可以增强你的 DevOps 实践,提高应用程序性能并简化部署。

我的博客:https://blog.ivwv.site
雨云官网:https://rainyun.ivwv.site

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vvw&

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值