理解网络

首先先来看一下阿里云服务器的网络信息。

容器down网卡 docker网卡_tomcat

原理

  1. 每启动一个docker容器,docker就会给容器分配一个ip,我们只要安装了docker,就会有一个网卡docker0的桥接,使用的是evth-pair技术。
    这里启动一个tomcat容器,然后再次查询网络信息,得到结果如下:

    从图里可以看到增加了54,55网卡。
    什么是veth-pair
容器带来的网卡都是一对对出现的
veth-pair就是一对的虚拟设备接口,他们是成对出现的,一端连着协议,一端彼此相连
正因为有这个特性,veth-path充当一个桥梁,连接各种虚拟网络设备

2.出现的网卡成对出现

3.容器和容器之间也是可以进行通信的

结构图如下

容器down网卡 docker网卡_tomcat_02


容器down网卡 docker网卡_docker_03

容器互联 --Link

为实现高可用,在服务ip发生变化的时候最好能够直接进行访问,就需要通过名字进行访问。在一般情况下, 使用名字访问时会出现问题:

容器down网卡 docker网卡_自定义_04


那么就对需要这两个网络进行链接

docker run -d -P --name tomcat03 --link tomcat02 tomcat 通过–link 进行连接之后就就可以通过名字进行访问

容器down网卡 docker网卡_自定义_05


这是一个单向的操作,在现有docker的操作中已经不建议这样去使用了。

自定义网络(推荐使用)

自定义网络不使用docker0;docker0不支持容器名连接访问。

对所有的docker网络进行查看

容器down网卡 docker网卡_容器down网卡_06

网络模式

bridge:桥接模式 在docker上面搭建桥梁(默认)
none:不配置网络
host:和宿主机共享网络
container:容器网络联通(用的少,局限性大)

命令

在之前启动镜像的时候,运行的命令其实就是相当于 docker run -d -P --name tomcat01 --net bridge tomcat;也就是说有一个默认设置 --net bridge

容器down网卡 docker网卡_容器down网卡_07

创建一个网络

docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet 这个网络的配置其实和一般路由器的配置是一样的,网关ip为192.168.0.1,允许的设备数量为192.168.0.2-192.168.255.255

创建完成之后查看所有的网络,出现了刚才自己创建的网络mynet

容器down网卡 docker网卡_docker_08


对这个网络的详细情况进行查看,其中画框的部分就是刚才自己设置的部分。之后就可以把启动的服务放进这个网络中

容器down网卡 docker网卡_tomcat_09

创建服务

接下来在创建服务的时候把他放进这个网络中

docker run -d -P --name tomcat-nettest-01 --net mynet tomcat 然后对容器详情进行查看,就可以看到这个容器的网络信息和暴露的端口的信息

容器down网卡 docker网卡_docker_10

测试

使用ping命令进行测试,可以看到在进行网络的设置之后,不管是使用ip还是容器名字就都可以ping通

容器down网卡 docker网卡_docker_11

好处

不同的集群使用不同的网络,可以保证集群是安全和健康的

网络连通

使用命令docker network connect mynet tomcat01进行连接,连接完成之后查看docker网络mynet的配置。tomcat01就可以被分配了一个mynet的ip,也就可以直接访问过来了。需要注意的是,这个时候tomcat01也还是存在于docker0网络下的,这也就意味着这时候tomcat01这一个容器就有了两个ip。

容器down网卡 docker网卡_容器down网卡_12