这是一段机器翻译的文本,可能包含错误!
Docker 简化了应用程序的部署。与其手动在服务器上安装和配置软件,不如在配置文件中定义一切。结果是可重现的、可移植的并且设置快速。
Docker Compose 是什么?
使用 Docker Compose,您可以在单个文件(docker-compose.yml)中定义多个服务。每个服务都是一个具有自己配置的容器。
services:
web:
image: nginx:latest
ports:
- "80:80"
grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
一个命令设置一切:
docker compose up -d
# 启动 Docker Compose 堆栈在后台运行。 (Start the Docker Compose stack in the background.)
你需要将服务迁移到另一台服务器吗?复制该文件并运行相同的命令。一切都相同。
为什么这是自动化?
考虑一下区别:
| 手动设置 | 使用 Docker Compose |
|---|---|
| 手动安装 Nginx | image: nginx:latest |
| 配置端口 | ports: "80:80" |
| 手动安装 Grafana | image: grafana/grafana:latest |
| 记录所有步骤 | 所有步骤都在 .yml 文件中记录 |
| 在下一台服务器上重复所有步骤 | docker compose up -d |
Docker Compose 文件 是 文档。它准确地描述了哪些服务正在运行,它们使用哪些端口以及如何配置。
有用的 Docker 命令
| 命令 | 它做什么 |
|---|---|
docker compose up -d | 在后台启动所有服务 |
docker compose down | 停止并删除所有容器 |
docker compose logs -f | 实时跟踪日志 |
docker compose pull | 获取所有镜像的最新版本 |
docker compose restart | 重启所有服务 |
docker ps | 显示正在运行的容器 |
Volumes: 在容器外部存储数据
容器是临时的。 如果您删除一个容器,所有内容都会消失。 为了保留数据,我们使用 volumes:
services:
database:
image: postgres:16
ports:
- "5432:5432"
environment:
POSTGRES_PASSWORD: hemmelig # 密码
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data:
数据库文件存储在一个名为 db-data 的卷中。 即使你删除并重新创建容器,数据仍然存在。
服务更新
更新一个 Docker 服务很简单:
# 获取最新版本
docker compose pull
# 使用新版本重启
docker compose up -d
将此与手动更新已安装软件进行比较,你可能需要下载、配置,并希望一切正常运行。
任务 1 - 使用 Docker Compose 设置 Nginx
创建一个 docker-compose.yml 来运行 Nginx Web 服务器:
- 创建一个新的文件夹并创建文件
docker-compose.yml - 使用
image: nginx:latest在端口 80 上定义一个服务 - 运行
docker compose up -d - 在浏览器中访问
http://localhost
任务 2 - 添加一项服务
扩展任务 1 中的 docker-compose.yml,添加一项额外的服务。例如:
- Uptime Kuma 在端口 3001 上
- Grafana 在端口 3000 上
使用 docker compose up -d 启动所有服务,并确认两个服务同时运行。
总结
- Docker Compose 允许您在一个文件中定义多个服务
- Compose 文件既是配置又是文档
- Volumes 在容器外部存储数据,以便在重启后保留数据
- 更新是
docker compose pull+docker compose up -d - Docker 使在服务器之间迁移服务变得容易