我一直在here,here以及整个Docker文档中。我想我需要用更简单的术语来解释这一点。
我的Docker容器需要能够做两件事:
为了满足这两个条件,我选择将容器作为 super 服务给出的命令来运行。
我的
docker-compose.yml
看起来像这样:version: "3"
services:
superservice:
image: docker
command: docker run -it --device=/dev/vchiq my/image-to-run:latest
volumes:
- /var/run/docker.sock:/var/run/docker.sock
deploy:
replicas: 1
mode: replicated
stdin_open: true
tty: true
这样,我仍然可以将我的服务
docker stack deploy
到群中(否则,指定--device
在群模式下不起作用)。当我启动集群时,我使用docker swarm init --advertise-addr my:wlan:ip:addr --data-path-addr eth1
这样做。我以为这会将我从容器中发送的数据包通过
eth1
路由到目的地。但是,当我
tcpdump -i eth1
时,没有任何结果。一切仍在经历wlan0
。为什么会发生这种情况,以及如何解决?
最佳答案
我发现执行此操作的方法是使用简单的sudo route set default eth1
。由于某种原因,我认为设置--data-path-addr=eth1
也会设置我使用的网络接口(interface)。显然,事实并非如此。
我没有花很多时间在网络上,尽管这是我要学习的,所以也许我将能够通过一些更复杂的路由以更好的解决方案来解决该问题。现在,当我想返回sudo route delete default eth1
界面时,我只是wlan0
。
现在对我来说这是一个好的解决方案,因为在部署计算机时,它仅使用eth1接口(interface)。
关于docker - 将Docker容器连接到特定的网络接口(interface)(例如eth1)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50841450/