Docker Compose简介
1 为什么用Docker-compose
使用一个 Dockerfile 模板文件,可以让用户很方便的定义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。Compose 恰好满足了这样的需求。它允许用户通过一个单独的 dockercompose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目
(project)。Compose 的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。
2 Docker-compose 命令
Compose 中有两个重要的概念:
- 服务 ( service ):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
- 项目 ( project ):由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml 文件中定义
命令 | 解释 |
---|---|
docker-compose build [options] [SERVICE…] | 构建(重新构建)项目中的服务容器 |
docker-compose config | 验证 Compose 文件格式是否正确 |
docker-compose up [options] [SERVICE…] | 它将尝试自动构建镜像、(重新)创建、启动服务、关联服务相关容器 |
docker-compose down | 停止 up 命令所启动的容器,并移除网络 |
docker-compose exec | 进入指定的容器 |
docker-compose iamges | 列出 Compose 文件中包含的镜像 |
docker-compose kill [options] [SERVICE…] | 通过发送 SIGKILL 信号来强制停止服务容器 |
docker-compose pause [SERVICE…] | 停止容器服务 |
docker-compose unpause [SERVICE…] | 恢复处于暂停状态中的服务 |
docker-compose stop [options] [SERVICE…] | 停止已经处于运行状态的容器,但不删除它 |
docker-compose restart [options] [SERVICE…] | 重启某个服务 |
docker-compose start [SERVICE…] | 启动已经存在的服务容器 |
3 Docker-compose 模板文件
本节参考自Docker从入门到实践·Gitbook
模板文件采用yaml
格式
#docker-compose.yml
#用于构建worepress
version: "3"
services:
db:
image: mysql:5.7
volumes:
- ./db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: yourPassword
MYSQL_DATABASE: wordpress
MYSQL_USER: root
MYSQL_PASSWORD: yourPassword
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: yourPassword
关于yaml格式:
- YAML大小写敏感;
- 使用缩进代表层级关系;
- 缩进只能使用空格,不能使用TAB,不要求空格个数,只需要相同层级左对齐(一般2个或4个空格)
- yaml对象使用冒号代表,格式为
key: value
;冒号后面要加一个空格。 - 使用一个短横线加一个空格代表一个数组项:
language:
- java
- python