Docker_04_Docker Compose
@
Docker Compose
Docker Compose:用于定义和运行多个容器的Docker工具
1)由yaml配置文件管理多个容器(分配属性);
2)Docker Compose中称组成容器为“服务”;
3)Docker Compose仅能运行在64位系统;
适用场景:
1)常用于单机编排容器(使容器可互通);
2)实现多个服务的同时启动/停止/更新
安装
安装命令:
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname-s`-`uname -m` > /usr/local/bin/docker-compose
赋权命令:chmod 744 /usr/local/bin/docker-compose
卸载命令:rm -rf /usr/local/bin/docker-compose
如:安装docker-compose,配置权限并验证是否成功
docker-compose.yaml
docker-compose.yaml编写分为3层结构:project、services和container
1)project(项目):docker-compose.yaml文件整体组成一个project;
2)services(服务):由多个容器组成的应用;
3)container(容器):配置容器成为具体的服务;
//单个project可包含多个service,单个service可包含多个container
docker-compose.yaml文件编写格式:
version: “版本号”
services:
服务1:
容器相关配置
服务2:
容器相关配置
其他配置
docker-compose.yaml文件中常用指令如下:
(1)version指令: “指定版本”
version:'版本号'
(2)services指令: 指定多个容器的集合
services:
容器名1:
···
容器名2:
···
容器名N:
···
(3)environment指令:指定自定义环境变量
environment:
变量名1: 变量值1
变量名2: 变量值2
变量值N: 变量值N
1)变量名和变量值的连接符号也可为“=”;
2)若调用build指令,则自定义环境变量失效,使用build的args的环境变量
(4)container_name指令:指定容器运行时的名称
container_name:名称
1)默认名称格式为:上级目录名_容器名_序号;
2)由于容器名称有唯一性,当指定容器名称时,无法将该容器扩展到多个容器
(5)build指令:根据指定Dockerfile构建镜像,并使用该镜像生成容器
build:
context: 目录路径
dockerfile: Dockerfile文件名
args:
变量名1:变量值1
变量名2:变量值2
变量名N:变量值N
1)context参数:指定包含Dockerfile文件的目录路径,也可以是URL
2)dockerfile参数:若指定目录下,Dockerfile不是默认名,需指定
3)args参数:定义环境变量
(6)image指令:指定构建该容器所使用的镜像
image:镜像ID:Tag
(7)hostname指令:指定容器的主机名
hostname:主机名
(8)deploy指令:指定容器运行的相关配置
deploy:
replicas:数值
resource:
cups:“数值”
memory:容量
restart-policy:
condition:重启策略
1)replicas参数:指定该容器的副本数量;
2)resource参数:限制该容器的资源(CPU和内存等);
3)restart-policy参数:指定容器关闭时,重启的策略
(9)depend_on指令:指定当前容器所依赖的容器
depend_on:
- 容器名1
- 容器名2
- 容器名N
1)当前容器会后于依赖容器启动
(10)expose指令:指定暴露端口,但不映射到宿主机(允许连接的服务访问)
expose:
- "端口号1"
- "端口号2"
- "端口号N"
(11)prots指令:暴露指定端口,并映射到宿主机(若不指定,则随机映射)
prots:
- "容器端口号"
- "宿主机端口号:容器端口号"
1)指定的端口号不能低于60
(12)links指令:链接到该服务中的另一个容器
links:
- 容器名1
- 容器名2
- 容器名N
(13)external_links指令:链接到外部容器
external_links:
- 容器名1
- 容器名2
- 容器名N
(14)volumes指令:指定容器的数据卷挂载
volumes:
- 容器的目录路径
- 名称:容器的目录路径
- 宿主机的目录路径:容器的目录路径
1)可在容器的目录路径后添加“:权限”配置该目录的权限;
2)数据卷挂载也可以其他配置中指定,则全部容器都默认挂载同一数据卷
(15)restart指令:指定容器的重启策略
restart:重启策略
1)no策略:容器关闭后,不重启;
2)always策略:容器关闭后,总是自动重启;
3)on-failure策略:错误代码为on-failure时,才重启;
4)unless-stopped策略:手动停止时,才不重启
(16)command指令:指定容器启动后默认执行的命令(优先级最高)
command:["命令","参数1","参数2","参数N"]
(17)networks指令:指定容器的网络或自定义网络
1)加入指定网络:
networks:
- 网络名
2)自定义网络,网络模式默认为birdge(仅能在其他配置层级下执行)
networks:
网络名:
driver:网络模式
docker-compose命令:配合docker-compose.yaml文件管理编排容器
指令格式:docker-compose 选项
1)docker-compose命令需切换到存储docker-compose.yaml的目录下执行
2)被列出的容器名格式为:上级目录名_容器名_序号
选项 | 含义 |
---|---|
config | 检测docker-compoes.yams文件 |
pull | 拉取services中定义的所有镜像 |
images | 列出project中所有定义的镜像 |
build | 构建/重建服务的镜像 主要用于docker-compose.yaml修改时,更新镜像 |
start | 启动已存在的容器 通过指定服务名,可单独启动容器 |
up | 构建容器并启动整个project的所有容器 |
ps | 列出project中所有容器状况 |
down | 停止并移除project的所有容器 |
stop | 停止运行的容器 通过指定服务名,可单独停止容器 |
restart | 重启所有容器 通过指定服务名,可单独重启容器 |
kill | 强制停止运行的容器 |
scale | 对指定容器进行扩缩容 |
rm | 删除所有已停止运行的容器 |
logs | 查看服务的容器日志 默认显示所有容器的日志,可指定容器单独显示 |
3)up选项默认以前台运行方式启动容器,可通过“up -d”使后台启动并运行所有容器
4)logs选项默认显示已存在的日志,可通过“logs -f”列出动态日志
docker-compose.yaml和docker-compose管理编排容器流程:
1)创建用于存储docker-compose.yaml文件的目录;
2)在创建目录下,创建并编写docker-compose.yaml文件;
3)编写完成并保存后,通过docker-compose管理;
如:通过Docker Compose搭建个人博客
如:启动Docker Compose编排的容器
如:续上,查看当前编排中容器运行状况
如:续上,停止当前编排中的db容器运行
如:续上,使编排运行两个db容器
如:续上,关闭编排