初始化 swarm
meiya@meiya:~$ docker swarm init
将当前节点作为manager节点加入swarm
meiya@meiya:~$ docker swarm join-token manager
创建自定义的overlay 网络
meiya@meiya:~$ docker network create -d overlay --attachable my-attachable-overlay
--attachable : 独立容器也能够通过该overlay网络进行通信,如果没加这个参数,则只能是swam节点的容器才能够访问
--opt encrypted : 会在 vxlan 层级开启 IPSEC 加密。这种加密技术会带来不可忽视的性能损失,因此应该在生产中使用该选项之前对其进行测试
查看网络配置
meiya@meiya:~$ docker network ls
NETWORK ID NAME DRIVER SCOPE
54b28e557d13 bridge bridge local
a6e93112585e docker_gwbridge bridge local
9720aa482a47 host host local
ascftm9nkzkw ingress overlay swarm
dg93iulbf1hx my-attachable-overlay overlay swarm
1e09aa60ae93 none null local
使用例子, springcloud 中 zuul和eureka 分别独立一个镜像并使用overlay启动容器
meiya@meiya:~$ docker run -d -p 8761:8761 --net=my-attachable-overlay --name=peacock-eureka 192.168.1.57:5000/peacock-eureka:1.0-SNAPSHOT
meiya@meiya:~$ docker run -d -p 8100:8100 --net=my-attachable-overlay --name=peacock-zuul 192.168.1.57:5000/peacock-zuul:1.0-SNAPSHOT
先看下zuul中配置eureka地址的配置
server:
tomcat:
basedir: /tmp/tomcatBaseDir
eureka:
instance:
hostname: localhost
client:
serviceUrl:
defaultZone: http://peacock-eureka:8761/eureka/
peacock-eureka 就是上面启动eureka容器的name, overlay会进行映射
这样docker就能通过overlay网络解决docker 容器无法访问外部网络或者其他外部宿主机器!!!