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文件的目录;

//每个docker-compose.yaml独占一个目录

2)在创建目录下,创建并编写docker-compose.yaml文件;

3)编写完成并保存后,通过docker-compose管理;


如:通过Docker Compose搭建个人博客

在这里插入图片描述
在这里插入图片描述


如:启动Docker Compose编排的容器
在这里插入图片描述


如:续上,查看当前编排中容器运行状况
在这里插入图片描述


如:续上,停止当前编排中的db容器运行
在这里插入图片描述


如:续上,使编排运行两个db容器
在这里插入图片描述


如:续上,关闭编排
在这里插入图片描述

posted @ 2022-02-12 12:15  爱和可乐的w  阅读(87)  评论(0编辑  收藏  举报