我一直在here,here以及整个Docker文档。我想我需要用更简单的术语解释这一点。
我的Docker容器需要能够完成两件事:
为了满足他们两者,我选择将容器作为超级服务给出的命令运行。
我的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
不能使用群组模式)。当我启动swarm时,我使用docker swarm init --advertise-addr my:wlan:ip:addr --data-path-addr eth1
。
我以为这会将我从我的容器发送的数据包通过eth1
路由到目的地。
但是,当我tcpdump -i eth1
时,没有任何事情可以解决。它仍然经历wlan0
。
为什么会这样,以及如何解决?
答案 0 :(得分:0)
我发现这样做的方法是使用简单的sudo route set default eth1
。由于某种原因,我认为设置--data-path-addr=eth1
也会设置我使用的网络接口。显然,事实并非如此。
我并没有花很多时间在网络上,尽管这是我要学习的,所以也许我将能够通过一些更复杂的路由使用更好的解决方案来解决该问题。现在,当我想返回到sudo route delete default eth1
界面时,我只是wlan0
。
这对我来说是一个不错的解决方案,因为在部署计算机时,它仅使用eth1接口。