docker-compose教程

Docker Compose 教程

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过 Docker Compose,你可以使用 YAML 文件来配置应用程序中的所有服务,然后使用 docker-compose 命令来启动和管理这些服务。

以下是 Docker Compose 的基础使用教程,包括安装、配置和运行简单的应用。


安装 Docker Compose

在使用 Docker Compose 之前,你需要确保系统上已经安装了 Docker 和 Docker Compose。

安装 Docker

如果你还没有安装 Docker,可以根据你的操作系统下载并安装:

安装 Docker Compose

  1. Linux 安装 Docker Compose:

    执行以下命令来安装 Docker Compose:

    1
    2
    sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | jq -r .tag_name)/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
  2. Windows/Mac

    对于 Windows 和 macOS,Docker Desktop 已经包含了 Docker Compose,因此无需单独安装。

  3. 验证安装

    安装完成后,运行以下命令确认 Docker Compose 已正确安装:

    1
    docker-compose --version

    你应该能看到 Docker Compose 的版本信息。


创建 Docker Compose 文件

Docker Compose 使用一个名为 docker-compose.yml 的文件来定义服务、网络和数据卷等配置。这个文件是 YAML 格式的,你可以通过它来定义整个应用程序的构成。

创建一个基本的 docker-compose.yml 文件

假设你要创建一个简单的应用,包含两个服务:一个 Web 服务和一个数据库服务。以下是一个基本的 docker-compose.yml 文件示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
version: '3.8'  # Docker Compose 的版本

services:
web:
image: nginx:latest # 使用 Nginx 官方镜像
ports:
- "8080:80" # 将本地 8080 端口映射到容器的 80 端口
volumes:
- ./html:/usr/share/nginx/html # 将本地 html 文件夹挂载到容器中
networks:
- webnet

db:
image: mysql:5.7 # 使用 MySQL 官方镜像
environment:
MYSQL_ROOT_PASSWORD: example # 设置 MySQL root 密码
volumes:
- db_data:/var/lib/mysql # 持久化数据库数据
networks:
- webnet

networks:
webnet: # 定义一个名为 webnet 的网络

volumes:
db_data: # 定义一个名为 db_data 的数据卷
  • version:指定 Docker Compose 文件的版本。
  • services:定义应用程序中的服务。每个服务都是一个独立的容器。
  • web 服务使用 nginx 镜像并映射端口 8080 和 80。
  • db 服务使用 mysql 镜像,并设置环境变量来配置 MySQL。
  • volumes:指定数据卷,用于持久化存储数据库数据。
  • networks:定义服务之间的网络。

启动服务

docker-compose.yml 文件所在的目录中打开终端,执行以下命令来启动所有服务:

1
docker-compose up

这个命令会拉取所需的镜像,创建并启动容器。你会看到 Docker Compose 输出每个服务的日志信息。

  • 如果你只想在后台运行服务(即以守护进程方式运行),可以使用 -d 参数:

    1
    docker-compose up -d

查看和管理服务

查看运行中的服务

你可以使用以下命令来查看所有正在运行的容器:

1
docker-compose ps

这将列出所有由 Docker Compose 启动的服务及其容器信息。

查看日志

如果你想查看某个服务的日志,可以使用:

1
docker-compose logs web

这将显示 web 服务的日志。你也可以使用 -f 参数实时跟踪日志:

1
docker-compose logs -f

停止服务

要停止运行中的服务,你可以使用:

1
docker-compose down

该命令会停止并删除所有服务容器、网络和卷,但不会删除镜像。

如果你只想停止容器而不删除它们,可以使用:

1
docker-compose stop

重新启动服务

如果你需要重新启动所有服务,可以运行:

1
docker-compose restart

使用构建镜像

如果你在 docker-compose.yml 文件中使用了 build 来构建自己的镜像,可以执行以下命令来构建并启动服务:

1
docker-compose up --build

此命令会强制重新构建服务镜像并启动服务。


常见 Docker Compose 命令

  • docker-compose up:启动服务。
  • docker-compose up -d:以后台模式启动服务。
  • docker-compose ps:查看服务状态。
  • docker-compose logs:查看服务日志。
  • docker-compose down:停止并删除容器、网络和卷。
  • docker-compose stop:停止服务。
  • docker-compose restart:重启服务。
  • docker-compose build:构建服务镜像。

清理 Docker Compose 资源

当你不再需要 Docker Compose 创建的服务时,可以运行以下命令清理资源:

  • 删除所有容器、网络和卷:

    1
    docker-compose down --volumes
  • 只删除容器和网络:

    1
    docker-compose down
  • 删除未使用的镜像和卷:

    1
    docker system prune

总结

Docker Compose 是一个强大的工具,能够帮助你轻松管理多容器应用。在 Docker Compose 中,你只需配置一个 docker-compose.yml 文件,就能轻松启动、停止和管理应用程序中的多个服务。你可以通过以下几个步骤来使用 Docker Compose:

  1. 创建并配置 docker-compose.yml 文件。
  2. 使用 docker-compose up 启动服务。
  3. 使用 docker-compose ps 查看服务状态。
  4. 使用 docker-compose down 停止并删除服务。

通过 Docker Compose,你可以在本地快速搭建和管理多容器的应用程序,极大简化了开发和部署流程。