查看docker宿主机的网卡信息我们会发现,有一个docker0的网卡,这个网卡就是用于跟docker容器进行通讯的,这个网段跟我们docker容器的网段是一样的:

#ifconfig 

ubuntu-docker入门到放弃(五)docker网络管理

docker容器的ip地址信息:跟宿主机的docker0是在同一网段的。

ubuntu-docker入门到放弃(五)docker网络管理

接着我们会在宿主机的网卡信息上,看到有很多下面这样的网卡:

ubuntu-docker入门到放弃(五)docker网络管理

然后我们在使用docker ps 查看一下我们正在运行的容器,会发现,这个网卡的数量跟我们运行的容器数量是一致的,

ubuntu-docker入门到放弃(五)docker网络管理

停止一台容器看下变化:

#docker stop 1dda09fe5e98
#docker ps

只有三个容器在运行,看下虚拟网卡是不是也少了一个:

ubuntu-docker入门到放弃(五)docker网络管理

果然少了一个:

ubuntu-docker入门到放弃(五)docker网络管理

 

由此可见,docker默认的创建网络的步骤大概是这样的:

1、创建一对虚拟接口

2、在docker宿主机内部,创建一块虚拟网卡,给他一个看起来很随意的名字,如vetha8864d0,vethd8ca452,并绑定它到docker0网卡或其他与主机通讯的网桥上。

3、将那个看起来很随意的网卡名字,在容器内部给他一个更容易理解的名字,eth0,ethX等,lo接口已经提供。

4、容器内eth0分配IP地址,该地址与宿主机的docker0或其他网桥地址在相同网段,并将网关指向该网桥。

 

在完成上述步骤后,docker容器已经完成了基本的网络配置,可以访问互联网了~

以上步骤在我们创建docker容器的时候,就已经自动实现了,不需要人为干预,

 

在我们使用docker run启动容器的时候,有以下选项来选择网卡的工作模式:-net=

–net=bridge— 默认选项,用网桥的方式来连接docker容器。
–net=host— docker 跳过配置容器的独立网络栈。
–net=container:NAME_or_ID— 新建的容器使用已有容器的网络配置。
–net=none— 新建的容器建立一个网络栈,但不对这个网络栈进行任何配置,所以只能访问本地网络,没有外网。

查看端口映射信息:

#docker port <id>
3306/tcp -> 0.0.0.0:330

查看logs:

#docker logs <id>