Docker网络

103 阅读2分钟

简介

当安装Docker后,会自动创建三个网络

docker network ls

1.png

Docker提供了以下常用的网络模式:

  • Bridge模式(桥接模式):默认的网络模式,容器通过虚拟网桥连接到主机的物理网络接口上,可以通过端口映射将容器的端口映射到主机上。
  • Host模式(主机模式):容器与主机共享网络命名空间,容器直接使用主机的网络栈,可以轻松访问主机上的网络资源,但会损失一定的隔离性。
  • None模式(无网络模式):容器不连接到任何网络,只能通过内部与其他容器进行通信,不能与外部进行网络通信。

当你运行一个容器的时候,可以使用 --network 参数来指定你的容器连接到哪一个网络。

1、Bridge模式

当 Docker 进程启动时,会在主机上创建一个名为 docker0 的虚拟网桥,默认IP地址为172.17.0.1,此主机上启动的 Docker 容器会连接到这个虚拟网桥上。

2.Bridge模式.png

Bridge模式也是docker的默认网络模式,每个bridge模式的容器都有一个独立的IP,如果外部需要访问需要进行端口映射。 docker0 就像是一个路由器,容器就像是路由器下的设备,它们在同一个网段内可以互相 ping 通。

3.png

2、Host模式

如果启动容器的时候使用 host 模式,那么这个容器将不会获得一个独立的 Network Namespace ,而是 和宿主机共用一个Network Namespace 。 容器将不会虚拟出自己的网卡,配置自己的 IP 等,而是使用宿主机的 IP 和端口。 但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。

自定义网络通讯

创建网络

docker network create  mynet

启动容器加入自定义网络

docker run -d --name app01 -p 7777:80 --network mynet nginx
docker run -d --name app02 -p 7788:80 --network mynet nginx

使用--network标志将其连接到一个网络

在容器内部互相通信,可以直接访问,如进入容器app01,可直接使用app02的IP地址访问app02

docker exec -it app01 bash
curl http://app02:80

网络.png

网络操作相关命令

docker network ls #查看网络
docker network rm mynet #删除网络
docker network inspect mynet #查看网络信息
docker network connect mynet 容器ID #将容器加入网络
docker network disconnect mynet 容器ID #将容器从网络中移除
docker network prune #删除未使用的网络
docker network rm $(docker network ls -q) #删除所有网络
docker network rm $(docker network ls -qf dangling=true) #删除所有未使用的网络
docker network rm $(docker network ls -qf driver=bridge) #删除所有bridge网络
docker network rm $(docker network ls -qf driver=overlay) #删除所有overlay网络