Docker网络模式介绍
Docker 容器网络模式是 Docker 容器配置中的一个重要部分,它决定了容器如何与外部世界以及其他容器进行通信;
容器之间并不是物理隔离,但是它们彼此之间默认是不互通的,这也有助于保持每个容器的纯粹性,相互之间互不影响。
其次,既然使用了容器,通常情况下,容器需要与宿主机通信,或者A容器与B容器通信而B不需要知道A的存在,或者A/B两容器相互通信,这样一来就用到了Docker的网络模式。
容器通信模式分类
网络模式 | 描述 |
---|---|
Bridge 模式 | Docker 的默认网络模式,每个容器分配独立网络命名空间和 IP 地址,容器内有虚拟网卡 etho,通过虚拟网卡和内部 IP 通信,与外部网络通信需 NAT 转换 |
Host 模式 | 容器共享宿主机的网络命名空间,无独立 IP 地址,可直接使用宿主机网络接口和 IP 地址,无需 NAT 转换,网络性能好但网络隔离性差,存在安全隐患 |
None 模式 | 容器不被分配任何网络资源,内部只有回环网络接口,不能访问外部网络,也不能被外部网络访问 |
Container 模式 | 新创建的容器与已存在的容器共享网络命名空间,新容器不创建自己的网卡和配置 IP 地址,而是与另一个容器共享资源 |
自定义网络模式 | 用户可创建自定义网络,指定网络的驱动程序、子网、网关等参数,适用于复杂网络需求场景 |
Docker安装好后,会默认创建三种网络,可以通过下面命令查看
docker network ls
网络如下:
[root@localhost ~]# docker network ls NETWORK ID NAME DRIVER SCOPE ac8b94809b6f bridge bridge local f9f7e15f6d71 host host local 07495827db6c none null local
常用命令:
命令 | 说明 | 文档地址 |
---|---|---|
docker network create | 创建一个网络 | |
docker network ls | 查看所有网络 | |
docker network rm | 删除指定网络 | |
docker network prune | 清除未使用的网络 | |
docker network connect | 使指定容器连接加入某网络 | |
docker network disconnect | 使指定容器连接离开某网络 | |
docker network inspect | 查看网络详细信息 |
自定义网络:
1.通过命令创建网络:
docker network create hmall
2.然后查看网络:
NETWORK ID NAME DRIVER SCOPE ac8b94809b6f bridge bridge local 9cc116a30680 hmall bridge local f9f7e15f6d71 host host local 07495827db6c none null local
其中,除了hmall以外,其它都是默认的网络
dd和myn容器:
3.将dd和myn都加入hmall网络
注意:在加入网络时可以通过--alias给容器起别名
这样该网络内的其它容器可以用别名互相访问!
3.1.myn容器加入hmall网络,指定别名为db,另外每一个容器都有一个别名是容器名
docker network connect hmall myn --alias db
3.2.db容器加入hmall网络
docker network connect hmall dd
3.3查看网络中的容器
docker inspect hmall
4.进入dd容器,尝试利用别名访问db
4.1.进入容器
docker exec -it dd bash
4.2.用db别名访问
ping db
效果:
4.3 用容器名访问
总结:
-
在自定义网络中,可以给容器起多个别名,默认的别名是容器名本身
-
在同一个自定义网络中的容器,可以通过别名互相访问