docker网络
1.docker 网络



1.创建网络netns:

运行网络命令:


如果回环口需要up的话需要2端都要连接起来






注意:以上操作都是分配了网络端口没有匹配IP,以下操作是给2容器分配IP地址
目前test1和test2都是没有IP地址的


启动2容器端口:

test1和test2已经UP了,同时IP已经分配

2容器网络已通:


2.容器内部网络(容器是独立的,所以网络也需是独立的)


容器内的网络能访问外部网络原理:









3.如何解决容器之间访问由于IP不固定导致连接不上


注意:test1 能ping test2 但是test1是不能ping test1的只能通过ip,link是有方向的


新建容器指定网络







再次看看my-bridge网络


如果2个容器是连接在自己创建的网络上,是不用link的就能通过容器的名字来访问的:

test2是连接到2个网络中的:



4.端口映射
创建nginx容器:

端口映射


5.docker中host和none网络



test1 是独立的,只有本地能访问

连接host网络


进入test1容器内部:

注意:test1和主机是共享一套网络的。会存在端口冲突,eg只能启用一个80端口
6.多复杂网络应用部署





容器应用源码:

应用程序通过环境变量就能访问到计算机的端口



做了端口映射外面才能访问:




同一个linux机器部署应用网络关系图:

多主机应用部署访问网络

7.不同linux主机通讯和应用部署(VXLAN)
Docker Overlay网络和etcd实现多机容器通信
redis数据服务:192.168.205.10----node1
flask应用服务:192.168.205.11----node2
192.168.205.11中的容器需要访问192.168.205.10 中的数据服务容器


以下是在2个主机搭建分布式存储
主机1:

主机2:

主机1执行:

主机2执行:

主机node1 重启docker服务,主要是让docker知道使用分布式存储


手动启动docker:

验证docker是否启动:

同样在node2上也执行node1的操作

主机node1的docker会发现一个node2主机的docker

创建Overlay 网络
在没创建之前查看2主机的网络:


创建Overlay网络
node1主机执行:

node2主机会自动加入node1创建的网络

原理如下:

通过docker的Overlay互通网络,案例如下:
node1主机创建容器:

node2主机创建容器:


查看dome网络:


注意:dome中已经有2和Containers,并且网络是互通的




