目录
- 1. Docker Compose 配置
- 1.1 基本配置结构
- 1.2 `docker-compose.yml` 的各部分
- 1.3 常用配置选项
- 2. Docker Compose 使用方法
- 2.1 创建 Docker Compose 配置文件
- 2.2 启动服务
- 2.3 查看容器状态
- 2.4 查看服务日志
- 2.5 停止服务
- 2.6 重新构建服务
- 3. Docker Compose 常用命令
- 3.1 `docker compose up`
- 3.2 `docker compose down`
- 3.3 `docker compose ps`
- 3.4 `docker compose logs`
- 3.5 `docker compose exec`
- 3.6 `docker compose stop`
- 3.7 `docker compose build`
- 4. 总结
Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。通过一个
docker-compose.yml
文件,你可以轻松地定义应用中的服务、网络、存储卷等资源,并用一个命令启动所有服务。Docker Compose 主要用于简化多容器应用的开发、测试和部署流程。
本文将详细介绍 Docker Compose 的配置、常用命令,以及使用方法的具体示例。
1. Docker Compose 配置
Docker Compose 的核心配置文件是 docker-compose.yml
,它遵循 YAML 格式来定义应用中的多个服务。
1.1 基本配置结构
一个最基础的 docker-compose.yml
文件结构通常包括以下部分:
services:
# 定义服务
web:
image: nginx # 使用官方 nginx 镜像
ports:
- "8080:80" # 将宿主机的8080端口映射到容器的80端口
volumes:
- ./html:/usr/share/nginx/html # 将本地html文件夹挂载到容器的html目录
networks:
- webnet # 使用名为 webnet 的网络
db:
image: mysql:5.7 # 使用 MySQL 镜像
environment:
MYSQL_ROOT_PASSWORD: example # 设置MySQL root 密码
networks:
- webnet # 使用同样的网络
networks:
webnet: # 定义 webnet 网络
1.2 docker-compose.yml
的各部分
- services:定义服务,每个服务可以有一个容器。每个服务都可以使用一个 Docker 镜像,或者从 Dockerfile 构建。
- image:指定 Docker 镜像,通常是公开镜像(如
nginx
),或者是自己构建的镜像。 - ports:定义端口映射,
"宿主机端口:容器端口"
。 - volumes:挂载数据卷,将宿主机的文件夹或文件挂载到容器内部,常用于持久化存储数据。
- environment:设置环境变量,通常用于传递配置参数。
- networks:定义和配置 Docker 网络。可以指定多个服务共享同一个网络。
1.3 常用配置选项
-
build
:从 Dockerfile 构建镜像。build: context: ./app # 指定 Dockerfile 目录
-
depends_on
:服务之间的依赖关系,确保容器启动顺序。depends_on: - db
-
restart
:容器退出后的重启策略。restart: always # 始终重启容器
2. Docker Compose 使用方法
2.1 创建 Docker Compose 配置文件
首先,创建一个 docker-compose.yml
文件,定义你的应用程序中所需的服务。
- 在你的项目根目录下,创建一个
docker-compose.yml
文件。 - 在文件中定义所有的服务,如 Web 服务、数据库服务等。
例如,创建一个包含 nginx
和 MySQL
的示例文件:
services:
web:
image: nginx
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
networks:
- webnet
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
networks:
- webnet
networks:
webnet:
2.2 启动服务
-
在
docker-compose.yml
文件所在的目录,打开命令行并运行以下命令:docker compose up
该命令会启动所有定义在
docker-compose.yml
中的服务。你可以通过浏览器访问http://localhost:8080
来查看 Nginx 服务是否已经启动。 -
如果你希望容器在后台运行,可以使用
-d
参数:docker compose up -d
这样,Docker Compose 将会在后台启动所有服务。
2.3 查看容器状态
可以使用以下命令查看正在运行的容器状态:
docker compose ps
输出示例如下:
Name Command State Ports
------------------------------------------------------------
myapp_db_1 docker-entrypoint.sh mysqld Up 3306/tcp
myapp_web_1 /docker-entrypoint.sh nginx Up 0.0.0.0:8080->80/tcp
2.4 查看服务日志
可以查看各个服务的日志信息:
docker compose logs
或者查看特定服务的日志,例如查看 web
服务:
docker compose logs web
2.5 停止服务
停止并删除所有服务容器及其相关资源:
docker compose down
如果只想停止服务,而不删除容器,可以使用:
docker compose stop
2.6 重新构建服务
如果修改了 Dockerfile
或 docker-compose.yml
中的某些内容,可以使用 --build
参数重新构建镜像:
docker compose up --build
这样会重新构建服务并启动容器。
3. Docker Compose 常用命令
3.1 docker compose up
启动和运行多容器服务。通过 docker-compose.yml
文件来启动、停止容器。
docker compose up
常用参数:
-d
:后台运行容器。--build
:在启动之前构建镜像。--force-recreate
:强制重新创建容器。
3.2 docker compose down
停止并删除所有容器、网络、卷等资源。
docker compose down
常用参数:
--volumes
或-v
:同时删除数据卷。--remove-orphans
:删除与当前服务不相关的容器。
3.3 docker compose ps
查看当前运行的容器和服务状态。
docker compose ps
输出包括每个容器的名称、状态、端口等信息。
3.4 docker compose logs
查看服务日志。默认情况下,显示所有服务的日志。
docker compose logs
查看特定服务的日志:
docker compose logs <service-name>
例如,查看 web
服务的日志:
docker compose logs web
3.5 docker compose exec
在正在运行的容器内执行命令。比如,进入 web
容器的 bash 环境:
docker compose exec web bash
3.6 docker compose stop
停止所有运行中的服务容器,但不会删除它们。停止后可以通过 docker compose start
恢复服务。
docker compose stop
3.7 docker compose build
手动构建镜像。如果在 docker-compose.yml
中使用了 build
选项,可以使用此命令来重新构建镜像。
docker compose build
4. 总结
Docker Compose 是一个功能强大的工具,适用于本地开发、测试和多容器应用的管理。通过一个简单的 docker-compose.yml
文件,你可以定义、构建并管理多个容器应用,避免了手动管理多个 Docker 容器的复杂性。本文介绍了如何配置 Docker Compose 文件、使用流程和常用命令,帮助你更高效地使用 Docker Compose 来部署和管理容器化应用。
常见的 Docker Compose 命令如 up
、down
、ps
、logs
等,可以帮助你快速管理和调试多容器应用。此外,Compose 的强大功能还包括服务依赖、环境变量、卷管理等,极大地提升了容器化应用的开发效率和可维护性。