共计 2480 个字符,预计需要花费 7 分钟才能阅读完成。
Docker-Compose 是用于定义和运行多容器 Docker 应用程序的编排工具。使用 docker-compose 后不再需要逐一创建和启动容器。您可以使用 YML 文件来配置应用程序需要的所有服务,然后使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。本章将介绍如何安装 Docker-compose,并对 docker-compose.yml 配置文件及常用命令进行详细总结和演示。
Docker-Compose 的安装
安装 docker-compose 前必需先安装好 Docker。这里只记录下 ubuntu 系统下 docker-compose 的安装过程。
# Step 1: 以 ubuntu 为例,下载 docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# Step 2: 给予 docker-compose 可执行权限
sudo chmod +x /usr/local/bin/docker-compose
# Step 3: 查看 docker-compose 版本
docker-compose --version
Docker-compose.yml 配置文件
# 第一部分: Building(构建镜像)
web:
# 使用当前目录下的 Dockerfile
build: .
args: # 增加额外参数
APP_HOME: app
volumes: # 目录挂载
- .:/code
depends_on: # 依赖 db 和 redis
- db
- redis
# 使用定制化的 Dockerfile,指定新目录相对路径和文件名
build:
context: ./dir
dockerfile: Dockerfile.dev
container_name: app # 自定义容器名
# 基于现有镜像构建
image: ubuntu
image: ubuntu:14.04
image: remote-registry:4000/postgresql
image: bcbc65fd
# 第二部分: Ports(端口)
ports: # 指定端口映射,HOST:Container
- "6379" # 指定容器的端口 6379,宿主机会随机映射端口
- "8080:80" # 宿主机端口 8080,对应容器 80
# 暴露端口给 -link 或处于同一网络的容器,不暴露给宿主机。expose: ["3000"]
# 第三部分: Environment Variables(环境变量)
environment:
MODE: development
SHOW: 'true'
# 等同于
environment:
- MODE=development
- SHOW: 'true'
# 使用环境变量 .env 文件
env_file: .env
env_file:
- ./common.env
- ./apps/web.env
# 第四部分:commands (命令)
# 容器启动后默认执行命令
command: bundle exec thin -p 3000
command: ['/bin/bash/', 'start.sh']
# 容器启动后程序入口
entrypoint: /code/entrypoint.sh
# 第五部分:Networks(网络)
networks: # 使用 bridge 驱动创建名为 frontend 的网络
frontend:
driver: bridge
networks: # 使用创建的网络进行通信
- frontend
# 加入已经存在的外部网络
networks:
default:
external:
name: my-pre-existing-network
# 第六部分:Volumes(数据卷)
volumes: # 创建名为 postgres_data 的数据卷
postgres_data:
db:
image: postgres:latest
volumes:
- postgres_data:/var/lib/postgresql/data
# 第七部分:External Links(外部链接)
# 目的是让 Compose 能够连接那些不在 docker-compose.yml 中定义的单独运行容器
services:
web:
external_links:
- redis_1
- project_db_1:mysql
Docker-compose 命令大全
# 默认使用 docker-compose.yml 构建镜像
docker-compose build
docker-compose build --no-cache # 不带缓存的构建
# 指定不同 yml 文件模板用于构建镜像
docker-compose build -f docker-compose1.yml
# 列出 Compose 文件构建的镜像
docker-compose images
# 启动所有编排容器服务
docker-compose up -d
# 查看正在运行中的容器
docker-compose ps
# 查看所有编排容器,包括已停止的容器
docker-compose ps -a
# 进入指定容器执行命令
docker-compose exec nginx bash
docker-compose exec web python manage.py migrate --noinput
# 查看 web 容器的实时日志
docker-compose logs -f web
# 停止所有 up 命令启动的容器
docker-compose down
# 停止所有 up 命令启动的容器, 并移除数据卷
docker-compose down -v
# 重新启动停止服务的容器
docker-compose restart web
# 暂停 web 容器
docker-compose pause web
# 恢复 web 容器
docker-compose unpause web
# 删除 web 容器,删除前必需停止 stop web 容器服务
docker-compose rm web
# 查看各个服务容器内运行的进程
docker-compose top
以上。
全文完