searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

配置docker swarm网络支持访问ipv6

2024-10-28 09:27:17
3
0

docker swarm网络类型

bridge 网络

用途:通常用于单个 Docker 节点的容器通信。容器可以通过 bridge 网络连接到宿主机,但无法与 Swarm 集群中的其他节点直接通信。
特点:默认在 Docker Engine 上启用。每个容器分配一个私有 IP 地址,并通过 NAT(网络地址转换)与外部通信。
适用场景:适合在单节点 Docker 环境下使用,不建议在多节点 Swarm 集群中使用。

overlay 网络

用途:用于跨多个 Docker Swarm 节点连接容器,为分布式应用提供内部通信的能力。
特点:在 Swarm 节点之间创建虚拟网络隧道,使容器能够通过内部 IP 地址进行通信,无需公开端口。可以实现安全的数据隔离。
适用场景:最常用于多节点 Swarm 集群,支持容器跨节点通信,比如微服务架构的内部通信。

host 网络

用途:容器直接使用宿主机的网络栈,类似于与宿主机共享网络。
特点:容器不再拥有单独的网络命名空间,因此端口冲突需要特别注意。与宿主机网络通信更直接,无需 NAT 转换。
适用场景:适用于需要高性能网络的应用,特别是在宿主机和容器之间频繁通信的场景。

macvlan 网络

用途:为容器分配与宿主机处于同一局域网的 MAC 地址,允许容器像物理网络中的独立设备一样访问网络。
特点:提供更好的网络隔离和性能,但配置复杂,通常需要对网络有较深理解。
适用场景:适用于希望容器有独立 IP 地址的场景,如模拟真实网络环境或需要容器直接连接到物理网络。

docker_gwbridge 网络

用途:这是 Docker 自动创建的一个 bridge 网络,用于 Swarm 集群内 overlay 网络与外部网络之间的通信。
特点:当 Swarm 节点内的容器需要访问外部网络时,流量会经过 docker_gwbridge 网络,以支持跨节点和外部的通信需求。
适用场景:在 Swarm 集群中启用 overlay 网络时自动创建,通常不需要手动配置,但在特定场景下,如自定义 IPv6 支持时,可以进行手动配置。

配置步骤

假设swarm集群有两个节点manager和worker,服务部署在worker上,需要让服务能够访问公网ipv6。

脱离当前集群

在worker上执行:

docker swarm leave --force

启用宿主机ipv6

验证宿主机是否启用ipv6:

cat /proc/sys/net/ipv6/conf/all/disable_ipv6

输出0则表示已启用,若输出1则需要编辑配置文件:

vi /etc/sysctl.conf

在末尾添加:

net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0

生效更改:

sysctl -p

启用宿主机网络接口ipv6

编辑配置文件:

vi /etc/sysconfig/network-scripts/ifcfg-{网络接口}

在末尾添加:

IPV6INIT=yes

IPV6_AUTOCONF=yes

重启网络服务:

systemctl restart network

修改docker默认网络配置

编辑配置文件:

vi /etc/docker/daemon.json

添加:

{
"ipv6": true,
"fixed-cidr-v6": "240e:123:123:123:123:123::/64",
"ip6tables": true,
"experimental":true
}

重启docker服务:

systemctl restart docker

修改docker_gwbridge网络配置

删除原网络:

docker network rm docker_gwbridge

创建新网络:

docker network create --driver bridge --subnet 172.18.0.0/16 --gateway 172.18.0.1 --ipv6 --subnet 240e:123:123:123:123:123::/64 --opt com.docker.network.bridge.enable_icc=true --opt com.docker.network.bridge.enable_ip_masquerade=true --opt com.docker.network.bridge.enable_ip_forwarding=true --opt com.docker.network.bridge.name=docker_gwbridge docker_gwbridge

验证docker_gwbridge网络是否启用ipv6:

docker network inspect docker_gwbridge

重新加入集群

在worker上执行:

docker swarm join --token

0条评论
作者已关闭评论
阿财继续努力
2文章数
0粉丝数
阿财继续努力
2 文章 | 0 粉丝
阿财继续努力
2文章数
0粉丝数
阿财继续努力
2 文章 | 0 粉丝
原创

配置docker swarm网络支持访问ipv6

2024-10-28 09:27:17
3
0

docker swarm网络类型

bridge 网络

用途:通常用于单个 Docker 节点的容器通信。容器可以通过 bridge 网络连接到宿主机,但无法与 Swarm 集群中的其他节点直接通信。
特点:默认在 Docker Engine 上启用。每个容器分配一个私有 IP 地址,并通过 NAT(网络地址转换)与外部通信。
适用场景:适合在单节点 Docker 环境下使用,不建议在多节点 Swarm 集群中使用。

overlay 网络

用途:用于跨多个 Docker Swarm 节点连接容器,为分布式应用提供内部通信的能力。
特点:在 Swarm 节点之间创建虚拟网络隧道,使容器能够通过内部 IP 地址进行通信,无需公开端口。可以实现安全的数据隔离。
适用场景:最常用于多节点 Swarm 集群,支持容器跨节点通信,比如微服务架构的内部通信。

host 网络

用途:容器直接使用宿主机的网络栈,类似于与宿主机共享网络。
特点:容器不再拥有单独的网络命名空间,因此端口冲突需要特别注意。与宿主机网络通信更直接,无需 NAT 转换。
适用场景:适用于需要高性能网络的应用,特别是在宿主机和容器之间频繁通信的场景。

macvlan 网络

用途:为容器分配与宿主机处于同一局域网的 MAC 地址,允许容器像物理网络中的独立设备一样访问网络。
特点:提供更好的网络隔离和性能,但配置复杂,通常需要对网络有较深理解。
适用场景:适用于希望容器有独立 IP 地址的场景,如模拟真实网络环境或需要容器直接连接到物理网络。

docker_gwbridge 网络

用途:这是 Docker 自动创建的一个 bridge 网络,用于 Swarm 集群内 overlay 网络与外部网络之间的通信。
特点:当 Swarm 节点内的容器需要访问外部网络时,流量会经过 docker_gwbridge 网络,以支持跨节点和外部的通信需求。
适用场景:在 Swarm 集群中启用 overlay 网络时自动创建,通常不需要手动配置,但在特定场景下,如自定义 IPv6 支持时,可以进行手动配置。

配置步骤

假设swarm集群有两个节点manager和worker,服务部署在worker上,需要让服务能够访问公网ipv6。

脱离当前集群

在worker上执行:

docker swarm leave --force

启用宿主机ipv6

验证宿主机是否启用ipv6:

cat /proc/sys/net/ipv6/conf/all/disable_ipv6

输出0则表示已启用,若输出1则需要编辑配置文件:

vi /etc/sysctl.conf

在末尾添加:

net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0

生效更改:

sysctl -p

启用宿主机网络接口ipv6

编辑配置文件:

vi /etc/sysconfig/network-scripts/ifcfg-{网络接口}

在末尾添加:

IPV6INIT=yes

IPV6_AUTOCONF=yes

重启网络服务:

systemctl restart network

修改docker默认网络配置

编辑配置文件:

vi /etc/docker/daemon.json

添加:

{
"ipv6": true,
"fixed-cidr-v6": "240e:123:123:123:123:123::/64",
"ip6tables": true,
"experimental":true
}

重启docker服务:

systemctl restart docker

修改docker_gwbridge网络配置

删除原网络:

docker network rm docker_gwbridge

创建新网络:

docker network create --driver bridge --subnet 172.18.0.0/16 --gateway 172.18.0.1 --ipv6 --subnet 240e:123:123:123:123:123::/64 --opt com.docker.network.bridge.enable_icc=true --opt com.docker.network.bridge.enable_ip_masquerade=true --opt com.docker.network.bridge.enable_ip_forwarding=true --opt com.docker.network.bridge.name=docker_gwbridge docker_gwbridge

验证docker_gwbridge网络是否启用ipv6:

docker network inspect docker_gwbridge

重新加入集群

在worker上执行:

docker swarm join --token

文章来自个人专栏
dockerswarm
1 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0