gpt4 book ai didi

docker - 'network_mode' 和 'networks' 不能组合解决方法

转载 作者:行者123 更新时间:2023-12-02 17:55:34 26 4
gpt4 key购买 nike

我目前正在使用 tinc在两台服务器之间创建 VPN。这允许我从服务器 A 通过 IP 地址 10.0.0.2 访问 B并创建一个接口(interface):

tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
inet 10.0.0.1 netmask 255.255.255.0 destination 10.0.0.1
inet6 fe80::babb:cc53:dd5e:23f8 prefixlen 64 scopeid 0x20<link>
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 500 (UNSPEC)
RX packets 42 bytes 11987 (11.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 55 bytes 7297 (7.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

我想将此路由传递给服务器 A 上的 docker 容器:
version: '3.2'
services:
traefik:
image: "traefik:v2.2.0"
ports:
- "80:80"
- "443:443"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "./acme:/acme"
- "./traefik.toml:/traefik.toml"
- "./rules:/etc/traefik/rules"
networks:
- traefik
deploy:
placement:
constraints:
- node.role == manager

networks:
traefik:
external: true

目前在容器内 traefik我可以 ping 10.0.0.2但它完全是一个不同的主机。

如果我删除:
networks:
traefik:
external: true

并添加 network_mode: hosttraefik 内服务我可以路由到 10.0.02但是我无法访问共享 traefik 的其他容器网络。

如果我尝试将它们放在一起,我会收到错误消息:

'network_mode' and 'networks' cannot be combined



换句话说,如何创建虚线连接?

enter image description here

这也描述了我的问题 container B不能同时在两个网络中。

enter image description here

我添加了 Server A就像一个更真实的群体示例一样。

最佳答案

我想出的一个解决方案是根本不使用 tinc 并使用 autossh使用这样的命令有效地转发:

autossh -M 43585 -o "compression=no" -o "cipher=aes128-gcm@openssh.com" -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -NR 3000:localhost:3000 root@serverA

在服务器 B 上运行(第一张图片)。

这意味着我可以从容器路由到 Server B通过 http://serverA:3000例如。

关于docker - 'network_mode' 和 'networks' 不能组合解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61430189/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com