首先讲一下 docker的网络模式: 我们使用docker run创建容器时,可以使用--net选项指定容器的网络模式,docker一共有4中网络模式:
host模式 - -net=host host模式,容器不会获得一个独立的network namespace,而是与宿主机共用一个network namespace,容器不会虚拟出自己的网卡、配置自己的ip等,而是使用宿主机的ip和端口。 当网络不应与Docker主机隔离,但又希望容器的其他方面隔离时,主机网络是最佳选择。
container模式 - -net=container container模式,指定新创建的容器和已经存在的一个容器共享一个network namespace,而不是和宿主机共享,新创建的容器不会创建自己的网卡、配置自己的ip,而是和指定的容器共享ip、端口等。两个容器除网络方面相同外,其他的如文件系统、进程列表等还是隔离的。
none模式 - -net=none none模式,容器拥有自己的network namespace,但是并未对容器进行任何网络配置,需要手工为容器添加网卡、配置ip等。可以使用pipework工具为容器指定ip等信息。 第三方网络插件使您可以将docker与专用网络集成。
bridge模式 - -net=bridge bridge模式是容器默认的网络模式,该模式会为每个容器分配独立的network namespace,设置ip、路由等信息,默认会将容器连接到一个虚拟网桥交换机docker0上,容器之间组成一个局域网,可以相互访问。 当您需要多个容器在同一docker主机上进行通信时,最好使用用户定义的网桥网络。用户定义的网桥网络的容器会自动将所有端口彼此公开,而不会向外界公开任何端口。默认网桥网络上运行相同的应用程序堆栈,则需要使用-p或–publish 标志分别打开Web端口和数据库端口。这意味着docker主机需要通过其他方式阻止对数据库端口的访问。
macvlan模式 Macvlan网络允许您将MAC地址分配给容器,使其在网络上显示为物理设备。Docker守护程序通过其MAC地址将流量路由到容器。 从VM设置迁移或需要容器看起来像网络上的物理主机(每个主机都有唯一的MAC地址)时,Macvlan网络是最好的。
overlay模式 覆盖网络 覆盖网络将多个docker守护程序连接在一起,并使群集服务能够相互通信。还可以使用覆盖网络来促进群集服务和独立容器之间或不同Docker守护程序上的两个独立容器之间的通信。 当您需要在不同Docker主机上运行的容器进行通信时,或者当多个应用程序使用集群服务一起工作时,覆盖网络是最好的。
https://docs.docker.com/network/
https://blog.csdn.net/csdn_wangyixiao/article/details/108975947 ssh