查看docker宿主机的网卡信息我们会发现,有一个docker0的网卡,这个网卡就是用于跟docker容器进行通讯的,这个网段跟我们docker容器的网段是一样的:
#ifconfig
docker容器的ip地址信息:跟宿主机的docker0是在同一网段的。
接着我们会在宿主机的网卡信息上,看到有很多下面这样的网卡:
然后我们在使用docker ps 查看一下我们正在运行的容器,会发现,这个网卡的数量跟我们运行的容器数量是一致的,
停止一台容器看下变化:
#docker stop 1dda09fe5e98
#docker ps
只有三个容器在运行,看下虚拟网卡是不是也少了一个:
果然少了一个:
由此可见,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>