官网:https://docs.docker.com/compose/install/
在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。
例如要实现一个web项目,除了web服务容器本身,往往还需要再加上护短的数据服务容器,甚至还包括前端的负载均衡容器等。
Compose定位:它是一个用于定义和运行多容器 Docker 的应用程序工具(单机容器编排工具)
使用 Docker Compose 可以轻松、高效的管理容器
docker-compose里的重要概念:
1 task(任务):一个容器被称为一个任务。
2 service(服务):多个容器集合
3 stack(服务栈):由多个服务组成,相互配合完成特定业务。如web应用服务,数据库服务,共同构成web服务栈。一般由一个docker-compose.yaml 文件定义
安装docker compose
sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose
验证:
docker-compose -v
Docker-compose.yml 模板文件主要命令
官网参考:https://docs.docker.com/compose/compose-file/
大部分指令与docker create|run 相关参数的含义都是类似的。
version:指定 docker-compose.yml 文件的写法格式
services:多个容器集合
build:配置构建时,Compose 会利用它自动构建镜像,该值可以是一个路径,也可以是一个对象,用于指定 Dockerfile 参数
command:覆盖容器启动后默认执行的命令
dns:配置 dns 服务器,可以是一个值或列表
dns_search:配置 DNS 搜索域,可以是一个值或列表
environment:环境变量配置,可以用数组或字典两种方式
env_file:从文件中获取环境变量,可以指定一个文件路径或路径列表,其优先级低于 environment 指定的环境变量
expose:暴露端口,只将端口暴露给连接的服务,而不暴露给主机
image:指定服务所使用的镜像
network_mode:设置网络模式
networks**:指定自定义网络**
networks通常应用于集群服务,从而使得不同的应用程序得以在相同的网络中运行,从而解决网络隔离问题。关于这个标签还有一个特别的子标签aliases,这是一个用来设置服务别名的标签,相同的服务可以在不同的网络有不同的别名。
ports:对外暴露的端口定义,和 expose 对应
links:将指定容器连接到当前连接,可以设置别名,避免ip方式导致的容器重启动态改变的无法连接情况
lables:向容器添加元数据,和Dockerfile的LABEL指令一个意思
volumes:卷挂载路径
logs:日志输出信息
stop_grace_period:指定在发送 SIGKILL 信号前,如果没对 SIGTERM 信号(或其他使用 stop_signal 选项设置的停止信号)进行处理时试图停止一个容器要等待的时间限制,默认为 10s。
depend on :指定依赖于哪个服务
deploy: 指定与部署和运行相关的配置
replicas如果服务是replicated
(默认为),请指定在任何给定时间应运行的容器数
resources配置资源约束
reservations [ˌrɛzəˈveɪʃənz]保留
secrets ˈ【siːkrəts】机密
Docker Compose 常用命令
ps:列出所有运行容器
docker-compose ps
logs:查看服务日志输出
docker-compose logs
port:打印绑定的公共端口,下面命令可以输出 eureka 服务 8761 端口所绑定的公共端口
docker-compose port eureka 8761
build:构建或者重新构建服务
docker-compose build
start:启动指定服务已存在的容器
docker-compose start zabbix
stop:停止已运行的服务的容器
docker-compose stop zabbix
rm:删除指定服务的容器
docker-compose rm eureka
up:构建、启动容器
执行docker-compose up -d (注意需要在文件所在的路径下执行)
kill:通过发送 SIGKILL 信号来停止指定服务的容器
docker-compose kill eureka
pull:下载服务镜像
scale:设置指定服务运行容器的个数,以 service=num 形式指定
docker-compose scale user=3 movie=3
run:在一个服务上执行一个命令
docker-compose run web bash
down:停止并移除服务
docker-compse -f xx.yml down zabbix-server zabbix-web mysql