Bootstrap

Docker高级管理------(docker-compose编排工具,consul架构,template)

本章结构

1.Docker网络原理
2.Docker Compose容器编排(yml)
3.构建自动发现的Docker服务架构(群集)
4.实现容器服务自动加入Nginx集群

Docker网络通信

Docker单机网络拓扑图:

在这里插入图片描述

端口映射:

1.端口映射机制将容器内的服务提供给外部网络访问
2.可随机或指定映射端口范围
docker run -d -P httpd:centos
docker run -d -p 49888:80 httpd:centos(两个端口号)

容器互联

1.在源容器和接收容器间建立一条网络通信隧道
2.使用docker run命令–link选项实现容器间互联通信

实现容器互联

docker run -d -P --name web1 httpd:centos
docker run -d -P --name web2 --link web1:web1
httpd:centos
docker exec -it web2 /bin/bash
ping web1

Docker Compose容器编排

1.Docker Compose的前身是Fig,它是一个定义及运行多个Docker容器的工具
2.使用Docker Compose不再需要使用shell脚本来启动容器
3.Docker Compose非常适合组合使用多个容器进行开发的场景
4.Docker Compose环境安装

[root@localhost ~]# curl -Lhttps://github.com/docker/compose/releases/download/1.21.1 /docker-compose-uname -s-uname -m-o /usr/local/bin/docker-compose[root@localhost ~ ]# chmod +x /usr/local/bin/docker-compose[root@localhost ~ ]# docker-compose -v`

5.Docker Compose文件结构

[root@localhost compose_ Inmp]# vim docker-compose.yml

6.YAML是一种标记语言很直观的数据序列化格式
7.文件格式及编写注意事项

1.不支持制表符tab键缩进,需要使用空格缩进
2.通常开头缩进2个空格
3.字符后缩进1个空格,如冒号、逗号、横杠
4.用井号注释
5.如果包含特殊字符用单引号引起来
6.布尔值必须用引号括起来

Docker Compse配置常用字段:

字段 描述
build dockerfile context 指定Dockerfile文件名构建镜像上下文路径
image 指定镜像
command 执行命令,覆盖默认命令
container name 指定容器名称,由于容器名称时唯一的,如果指定自定义名称,则无法scale
deploy 指定部署和运行服务相关配置,只能在Swarm模式使用
environment 添加环境变量
networks 加入网络
ports 暴露容器端口,与-p相同,但端口不能低于60
volumes 挂载宿主机路径或命令卷
restart 重启策略,默认no,always,no -failure,unless-stoped
hostname 容器主机名

Docker Compse常用命令:

字段 描述
build 重新构建服务
ps 列出容器
up 创建和启动容器
exec 在容器里面执行命令
scale 指定一个服务容器启动数量
top 显示容器进程
logs 查看容器输出
down 删除容器/网络/数据卷和镜像
stop/start/restart 停止/启动/重启服务

Compose命令说明

基本的使用格式

docker-compose [options] [COMMAND] [ARGS...]

docker-compose选项

--verbose输出更多调试信息
--version打印版本并退出
-f, --file FILE使用特定的compose模板文件,默认为docker-compose.yml
-p, --project-name NAME指定项目名称,默认使用目录名称

Docker consul容器服务更新与发现

容器服务更新与发现拓扑图:

在这里插入图片描述

Demo:docker-compose部署

先安装Docker引擎
[root@localhost ~]# yum install yum-utils device-mapper-persistent-data lvm2 -y
[root@localhost ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@localhost ~]# yum install -y docker-ce
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl start docker.service
[root@localhost ~]# systemctl enable docker.service
[root@localhost ~]# tee /etc/docker/daemon.json <<-'EOF'
{
   
  "registry-mirrors": ["https://w1ogxqvl.mirror.aliyuncs.com"]
}
EOF
[root@localhost ~]# echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.cnf
[root@localhost ~]# sysctl -p
[root@localhost ~]# service network restart
Restarting network (via systemctl):                        [  确定  ]
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
[root@localhost ~]
;