Docker 深入3
Docker 网络
首先启动一个带net-tool的镜像(可以自己写个dockerfile构建下镜像或者进入容器安装 apt update && apt install -y iproute2),查看容器的网卡信息

对于windows下,默认并没有docker的网卡,所以启动的容器可能ping不通,如果存在网卡,会发现网卡地址和容器内网卡地址处于一个网段下。
实验发现每启动一个容器,宿主机内会多一个虚拟网卡,正好和容器匹配,这个技术称为veth-pair

工作原理,就是个交换机(多网桥)
容器互联
–link
类似dns,通过容器名访问
| 1 | docker run -d -P --name tomcat03 --link tomcat02 tomcat | 
这样03即可ping通02,其实–link只是在启动的容器内添加了host配置,不过我感觉这种方式不好用,直接把host文件共享更方便配集群的话。
查看网络配置:docker network ls docker network inspect
自定义网络
直接启动的容器,默认会添加--net bridge参数
在默认的桥接模式下,宿主机会存在一个虚拟网卡用作所有容器的网关,容器之间通信都走这个网关。
| 1 | 创建网络:docker network create | 

这样的最大好处是可以通过容器名访问了,且保证了只有子网内的容器是可以互相访问的
通过docker创建的网络,不同的网段是无法通信的,通过docker network connect 网络 目标容器联通
REDIS集群
做这样一个模型,两个redis组合一个哨兵模式,共有三组
- 组网,把redis集群放在一个局域网网段 - docker network create --driver bridge --subnet 172.38.0.0/16 redisnet
- 启动容器 
| 1 | 批量创建配置文件 | 
容器启动了,现在需要将这六个容器集群,这里可以随便进入一个redis容器,默认目录是/data,里面有节点配置文件,可以通过命令配置三个主机和从机:
| 1 | redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.38.0.14:6379 | 

使用集群测试,可以在集群内登陆:
redis-cli -c,查看集群主从信息cluster nodes,键入一个值保存set name tr,这时候docker停止保存的主机,在重新进入redis-cli,获取get name发现可以在从机获取
SpringBoot打包微服务
通过idea环境工具打包

可以配置idea的docker仓库

编写Dockerfile(和pom同一层级)

| 1 | FROM java:8 | 
打包就行了 docker build

启动测试镜像
