docker网络:要解决的问题:就是容器之间通信的问题,这在集群搭建的是否re
结论:内部可以ping通
原理
docker每安装一个容器就会分配一个ip,我们安装了docker之后就会有一个网卡
这是用的桥接模式,veth-pair技术(虚拟技术接口,成对出现,一段连着协议,一段彼此相连)
容器之间是可以通信的
--link
解决通过名字就可以ping通的问题,而不是通过ip,因为每次docker重启的话ip都是会变的
通过下面的问题可以解决 docker run -d -P --name tomcat01 --link tomcat02 tomcat
但是这种方式已经不推荐了
一般我们不会去用docker0,因为它不支持容器名访问
自定义网络
网络模式
桥接:docker默认(自己创建也用)
none:不配置网络
host:和宿主机共享网络
container:容器内网络连通(用的少)
自定义网络
使用自己的网络
这样的话,只要是自己定义的网络,都可以通过容器名字来ping通
网络连通
其实就是将容器直接放到了对应的网络下,一个容器这个时候就是有两个ip了
redis集群搭建
docker network create redis --subnet 172.38.0.0/16
用对应的脚本
for port in $(seq 1 6); \ do \ mkdir -p /mydata/redis/node-${port}/conf touch /mydata/redis/node-${port}/conf/redis.conf cat << EOF >/mydata/redis/node-${port}/conf/redis.conf port 6379 bind 0.0.0.0 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 cluster-announce-ip 172.38.0.1${port} cluster-announce-port 6379 cluster-announce-bus-port 16379 appendonly yes EOF done
之后分别启动
先进入第一个redis
springboot微服务构建docker镜像
构建springboot项目
打包应用
编写dockerfile
构建镜像
发布运行