一、什么是Docker compose?
Compose是一个用于定义、启动和管理多容器docker应用程序的工具。compose通过在YAML文件中定义服务和服务系统,并通过命令行docker-compose进行管理
Docker compose能做哪些事?
- 构建Docker镜像
- 启动容器化的应用及服务
- 启动完整的服务系统
- 管理系统中单个服务的状态
- 服务伸缩
- 查看生成服务的容器的收集日志
二、Docker-compose安装
详细安装参照:https://docs.docker.com/compose/install/
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.3/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
三、docker-compose常用选项与命令
3.1、命令格式
docker-compose [-f ...] [options] [COMMAND] [ARGS...]
Options:
-f, --file FILE :指明compose yml文件,默认文件名docker-compose.yml
-p, --project-name NAME:指定项目名称,默认使用当前所在目录为项目名
--verbose:更详细的输出信息
--log-level LEVEL:设定日志级别(DEBUG, INFO, WARNING, ERROR, CRITICAL)
--no-ansi:不打印ansi控制字符
-v, --version:查看版本
-H, --host HOST:连接守护进程套接字
Commands:
build:构建或重建服务
config:验证并查看compose文件
create :创建服务
down :停止并删除容器,网络,镜像和卷
events:从容器接收实时事件
exec :在正在运行的容器中执行命令
help :获取帮助信息
images :列出镜像
kill :关闭容器
logs:查看容器输出的日志
pause:暂停服务
port:打印公共端口以进行端口绑定
ps:列出容器
pull:拉取容器
push:上传容器
restart:重启服务
rm:删除停止的容器
run:运行一次性命令
scale: 规模设置服务容器的数量
start:启动服务
stop:停止服务
top :显示正在运行的进程
unpause:取消暂停的服务
up:创建并启动容器
version:查看Docker-Compose版本信息
3.2、build
构建(重新构建)项目中的服务容器,服务容器一旦构建后,将会带上一个标记名。可以随时在项目目录下运行docker-compose build来重新构建服务
命令格式:build [options] [--build-arg key=val...] [SERVICE...]
Options:
--build-arg key=val:设置构建服务时的变量
--compress:使用gzip压缩构建上下文。
--force-rm:始终卸下中间容器
-m, --memory MEM:设置容器的内存限制
--no-cache:构建镜像时不使用缓存
--no-rm:构建成功后,不去除中间容器
--parallel:并行构建镜像
--progress string Set type of progress output (auto, plain, tty).
EXPERIMENTAL flag for native builder.
To enable, run with COMPOSE_DOCKER_CLI_BUILD=1)
--pull:始终尝试通过拉取操作来获取更新版本的镜像
-q, --quiet :不打印任何内容到标准输出
3.3、up
构建,重新创建,启动项目服务(docker-compose.yml)中的容器
命令格式:up [options] [--scale SERVICE=NUM...] [SERVICE...]
Options:
-d, --detach:后台运行容器
--no-color:单色输出
--quiet-pull:拉取镜像时不打印进度信息
--no-deps:不启动链接服务
--force-recreate:强制停止并重新创建容器
--always-recreate-deps:重新创建依赖的容器,与--no-recreate不能同时使用
--no-recreate:如果容器已存在,不重新创建,与--force-recreate和-V不能同时使用
--no-build:没有镜像,就不创建容器
--no-start:创建服务但不启动
--build:启动容器前生成镜像
--abort-on-container-exit:停止所有容器,与-d不能同时使用
--attach-dependencies:附加到依赖的容器
-t, --timeout TIMEOUT:超时时间,默认10秒
-V, --renew-anon-volumes:重新创建由docker管理的卷
3.4、down
停止容器并删除容器,网络,卷和镜像,不删除extra的网络和卷。
命令格式:down [options]
Options:
--rmi type:删除镜像,type必须是(all,local)之一,
'all': 删除所有镜像
'local': 只删除没有由'image'字段设置的自定义标签
-v, --volumes :删除卷
--remove-orphans:删除没有在 Compose file中定义的容器
-t, --timeout TIMEOUT:超时时间,默认10秒
四、docker-compose模板文件
Compose目前有三个版本分别为Version 1,Version 2,Version 3,Compose区分Version 1和Version 2(Compose 1.6.0+,Docker Engine 1.10.0+)。Version 2支持更多的指令。Version 1将来会被弃用。Compose模板文件是一个定义服务、网络和卷的YAML文件。Compose模板文件默认路径是当前目录下的docker-compose.yml,可以使用.yml或.yaml作为文件扩展名。
Docker-Compose标准模板文件应该包含version、services、networks 三大部分,最关键的是services和networks两个部分。
详细的compose文件变量见: https://docs.docker.com/compose/compose-file/#variable-substitution
4.1、Docker-compose示例
Filename:docker-compose.yml
wordpress:
image: wordpress:4.2.2
links:
- db: mysql
ports:
- 8080:80
db:
image: mariadb
environment:
MYSQL_ROOT_PASSWORD: 123456
4.2、启动docker
systemctl start docker
4.3、运行docker-compose
docker-compose up
4.4、查看运行中的容器(需在docker-compose.yml所在目录)
docker-compose ps