Docker作为自动化

Skip to content

这是一段机器翻译的文本,可能包含错误!

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

将此与手动更新已安装软件进行比较,你可能需要下载、配置,并希望一切正常运行。

Easy 任务 1 - 使用 Docker Compose 设置 Nginx

创建一个 docker-compose.yml 来运行 Nginx Web 服务器:

  1. 创建一个新的文件夹并创建文件 docker-compose.yml
  2. 使用 image: nginx:latest 在端口 80 上定义一个服务
  3. 运行 docker compose up -d
  4. 在浏览器中访问 http://localhost

Medium 任务 2 - 添加一项服务

扩展任务 1 中的 docker-compose.yml,添加一项额外的服务。例如:

使用 docker compose up -d 启动所有服务,并确认两个服务同时运行。

总结

  • Docker Compose 允许您在一个文件中定义多个服务
  • Compose 文件既是配置又是文档
  • Volumes 在容器外部存储数据,以便在重启后保留数据
  • 更新是 docker compose pull + docker compose up -d
  • Docker 使在服务器之间迁移服务变得容易