大数跨境

Docker:第 8 天 - Docker Compose

Docker:第 8 天 - Docker Compose 索引目录
2025-01-17
0

掌握 Docker Compose:综合指南

介绍

Docker Compose 是一款功能强大的工具,可简化多容器 Docker 应用程序的管理。通过使用单个配置文件,您可以为应用程序定义、构建和编排服务、网络和卷。在本文中,我们将深入探讨 Docker Compose 的主要功能、组件和工作流程,帮助您了解如何有效地管理容器化应用程序。


为什么要使用 Docker Compose?

处理多容器应用程序时,管理单个容器可能会变得很复杂。Docker Compose 通过允许您执行以下操作来简化此过程:

  • 在一个文件中定义整个应用程序堆栈docker-compose.yml

  • 使用简单的命令启动、停止和重建服务。

  • 监控正在运行的服务,包括日志和状态。

  • 对服务执行一次性命令以进行调试或维护。


Docker Compose 工作流程

Docker Compose 工作流程遵循一个简单的顺序:

  1. 构建:使用 为您的服务创建图像docker-compose build

  2. 启动:使用 启动所有服务docker-compose up

  3. 拆除:使用 停止并删除容器、网络和卷docker-compose down

键盘命令:

# Build images
docker-compose build

# Start services
docker-compose up

# Stop and clean up
docker-compose down

YAML 文件基础知识

docker-compose.yml文件是 Docker Compose 的主干。它使用 YAML(另一种标记语言)语法,这种语法易于理解且结构化。

要点:

  • 缩进很重要:使用一致的空格;避免使用制表符。

  • 地图:定义key: value结构化数据对。

  • 列表:使用前缀定义项目序列-

例子:

# Map example
person:
name: John Doe
address:
street: 123 Main Street
city: Anytown
state: CA

# List example
pets:
- name: Fluffy
- name: Rover

# List of maps
list_of_maps:
- name: Alice
age: 25
- name: Bob
age: 30
address:
street: 456 Oak Avenue
city: Someville
state: NY

Docker Compose 文件的关键组件

版本

定义 Docker Compose 语法版本。例如:

version: "3.8"

服务

定义组成应用程序的容器。每个服务可以指定:

  • 图像:要使用的 Docker 图像。

  • 端口:主机到容器的端口映射。

  • 环境变量:动态配置。

  • :数据持久性。

例子:

services:
web:
image: nginx:latest
ports:
- "80:80"

为持久数据定义命名卷或为共享主机文件定义绑定挂载。

volumes:
data-volume:

网络

为服务通信定义自定义网络。

networks:
custom-network:

环境变量

为服务设置动态值。

environment:
- NODE_ENV=production

命令

覆盖默认容器命令。

command: npm start

使用 Docker Compose 构建镜像

Docker Compose 通过将构建过程直接集成到docker-compose.yml文件中来简化映像创建。

构建属性:

  • 上下文:包含 Dockerfile 或 Git 存储库的目录的路径。

  • Dockerfile:指定备用的 Dockerfile。

  • Args:传递动态构建参数。

  • 标签:为构建的图像定义标签。

例子:

services:
webapp:
build:
context: ./dir
dockerfile: Dockerfile.dev
args:
GIT_COMMIT: cdc3b19
image: custom-image-name:tag

高级功能

管理应用程序生命周期

Docker Compose 提供了强大的生命周期管理功能:

  • 启动/停止/重建服务:轻松控制服务状态。

  • 查看正在运行的服务:监控状态和日志。

  • 运行一次性命令:执行维护或调试任务。

容器之间的通信

使用 Docker Compose,您可以高效地编排多个容器。同一 Compose 文件中定义的服务可以通过自定义网络无缝通信。

例子:

networks:
app-network:
driver: bridge

services:
app:
image: app-image
networks:
- app-network
api:
image: api-image
networks:
- app-network


【声明】内容源于网络
0
0
索引目录
索引目录是一家专注于医疗、技术开发、物联网应用等领域的创新型公司。我们致力于为客户提供高质量的服务和解决方案,推动技术与行业发展。
内容 444
粉丝 0
索引目录 索引目录是一家专注于医疗、技术开发、物联网应用等领域的创新型公司。我们致力于为客户提供高质量的服务和解决方案,推动技术与行业发展。
总阅读544
粉丝0
内容444