引言
Docker Compose 是一个用于定义和管理多容器 Docker 应用的工具。它通过一个 YAML 文件来描述应用的服务、网络和卷,使用简单的命令来管理整个应用的生命周期。本文将详细介绍 Docker Compose 的基本用法和常见操作。
安装 Docker Compose
在使用 Docker Compose 之前,需要确保已经安装了 Docker Compose。可以通过以下命令检查是否已经安装:
docker-compose --version
如果未安装,可以按照官方文档进行安装。
创建 docker-compose.yml
文件
docker-compose.yml
文件是 Docker Compose 的核心,通过这个文件定义应用的各个服务。下面是一个简单的示例:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
redis:
image: redis:alpine
这个示例定义了两个服务:一个 Nginx Web 服务器和一个 Redis 数据库。
常用命令
Docker Compose 提供了一组命令来管理多容器应用。以下是一些常用的命令:
启动服务
使用 up
命令启动所有定义的服务:
docker-compose up
添加 -d
选项可以在后台运行服务:
docker-compose up -d
停止服务
使用 down
命令停止并移除容器、网络和卷:
docker-compose down
查看服务日志
使用 logs
命令查看所有服务的日志:
docker-compose logs
可以通过指定服务名称来查看特定服务的日志:
docker-compose logs web
列出服务
使用 ps
命令列出当前正在运行的服务:
docker-compose ps
重新启动服务
使用 restart
命令重新启动服务:
docker-compose restart
构建服务
使用 build
命令构建或重新构建服务:
docker-compose build
执行命令
使用 exec
命令在运行中的容器内执行命令:
docker-compose exec web /bin/bash
拉取镜像
使用 pull
命令从 Docker 注册表中拉取服务镜像:
docker-compose pull
进阶用法
使用环境变量
可以在 docker-compose.yml
文件中使用环境变量,来简化配置管理。环境变量可以在 .env
文件中定义:
WEB_PORT=80
REDIS_IMAGE=redis:alpine
在 docker-compose.yml
文件中引用这些变量:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "${WEB_PORT}:80"
redis:
image: "${REDIS_IMAGE}"
使用卷进行数据持久化
卷用于在容器之间共享数据或在容器停止后保留数据。在 docker-compose.yml
文件中定义卷:
version: '3.8'
services:
db:
image: postgres:alpine
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
使用网络配置服务通信
自定义网络使服务可以通过名称互相访问。在 docker-compose.yml
文件中定义网络:
version: '3.8'
services:
app:
image: my_app
networks:
- app_network
db:
image: postgres:alpine
networks:
- app_network
networks:
app_network:
暂无评论内容