Docker 记录 ------ 使用weave实现docker跨网段通信

参考博客

 

(1)我们使用weave虚拟工具配置,完成两台主机上的DDS接收端和发送端的实时通信。首先保证两台宿主机在同一网段下,这里我的主机(简称c1),皓淳主机(简称c2)的ip地址分别是192.168.1.241和192.168.1.168

(2)weave的安装过程:首先我们完成对6783接口的处理:sudo ufw allow 6783

(3)安装weave:首先将weave文件移动到/usr/loacl/bin,然后执行:chmod a+x /usr/local/bin/weave。之后执行:sudo weave launch

latest: Pulling from weaveworks/weave
21c83c524219: Pull complete
02ec35b6f627: Pull complete
c40f141adde9: Pull complete
a63db11be476: Pull complete
e8d3a1b4fb09: Pull complete
Digest: sha256:a4f1dd7b4fcd3a391c165f1ab20c5f72330c22fe0918c899be67763717bb2a28
Status: Downloaded newer image for weaveworks/weave:latest
docker.io/weaveworks/weave:latest
latest: Pulling from weaveworks/weavedb
a53a673d456f: Pull complete
Digest: sha256:69451a2121b288e09329241de9401af1aeddd05d93f145764bbb735a4ea05c76
Status: Downloaded newer image for weaveworks/weavedb:latest
docker.io/weaveworks/weavedb:latest
Unable to find image 'weaveworks/weaveexec:latest' locally
latest: Pulling from weaveworks/weaveexec
21c83c524219: Already exists
02ec35b6f627: Already exists
c40f141adde9: Already exists
a63db11be476: Already exists
e8d3a1b4fb09: Already exists
a32777c54c9c: Pull complete
62ae831e3996: Pull complete
4dce36b0e389: Pull complete
6f3464413eb4: Pull complete
Digest: sha256:847cdb3eb0d38ff6590b6066ec0f6b02ced47c1d76a78f3f93d8ca6145aecaa5
Status: Downloaded newer image for weaveworks/weaveexec:latest
46fbc8bf317be2515ccd93892a14de1c7709bc32f16762c30d6329c38f4f5045

(4)观察docker的运行内容:sudo docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
46fbc8bf317b weaveworks/weave:latest "/home/weave/weaver …" 12 seconds ago Up 11 seconds weave
e9f579397e8d weaveworks/weaveexec:latest "data-only" 12 seconds ago Created weavevolumes-latest
0aff14057936 weaveworks/weavedb:latest "data-only" 12 seconds ago Created weavedb

(5)观察docker镜像是否齐全:sudo docker images

REPOSITORY TAG IMAGE ID CREATED SIZE
10.71.22.141:5000/dds latest 1d5dcc0655e7 28 hours ago 807MB
weaveworks/weaveexec latest e8d7a2b95ca2 17 months ago 71.2MB
weaveworks/weave latest c5f94c391f12 17 months ago 61.2MB
weaveworks/weavedb latest 19661b1dbf28 18 months ago 698B

(6)观察brctl,但是这里没有安装相关功能: sudo brctl show

(7)观察weave的ip:sudo ifconfig weave

weave: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1376
inet6 fe80::cca5:c9ff:feba:a664 prefixlen 64 scopeid 0x20<link>
ether ce:a5:c9:ba:a6:64 txqueuelen 1000 (Ethernet)
RX packets 42 bytes 4910 (4.9 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 22 bytes 2897 (2.8 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

(8)观察docker的network:sudo docker network ls

NETWORK ID NAME DRIVER SCOPE
41ff08ec42c4 bridge bridge local
bf346cea5356 host host local
312a84361715 none null local
8264adb53fd2 weave weavemesh local

(9)在c1上进行对c2的weave功能的连接:
sudo weave connect 192.168.1.168
在c2上进行对c1的weave功能的连接:
sudo weave connect 192.168.1.241

(10)开始run需要的DDS镜像,注意到这里添加了参数"--net=none"使得运行的容器不使用docker自动分配的ip,实用意义不明,但是加上是通的,故保留。
sudo docker run -itd --net=none 10.71.22.141:5000/dds
结果会返回该容器的container id

(11)查看docker是否正常运行:sudo docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a4d9495dd5f7 10.71.22.141:5000/dds "/bin/bash" 4 seconds ago Up 4 seconds compassionate_wright
46fbc8bf317b weaveworks/weave:latest "/home/weave/weaver …" 3 minutes ago Up 3 minutes weave

(12)这步较为关键,要使用weave工具命令该容器在c1上使用192.168.10.11/24这个地址:
sudo weave attach 192.168.10.20/24 a4d9495dd5f7

(13)查看weave的相关状态:sudo weave version
weave script unreleased
weave git-34de0b10a69c

sudo weave status

Version: git-34de0b10a69c (up to date; next check at 2022/07/30 17:26:33)

Service: router
Protocol: weave 1..2
Name: ce:a5:c9:ba:a6:64(yhc-virtual-machine)
Encryption: disabled
PeerDiscovery: enabled
Targets: 1
Connections: 2 (2 established)
Peers: 3 (with 6 established connections)
TrustedSubnets: none

Service: ipam
Status: all IP ranges owned by unreachable peers - use 'rmpeer' if they are dead
Range: 10.32.0.0/12
DefaultSubnet: 10.32.0.0/12

Service: dns
Domain: weave.local.
Upstream: 127.0.0.53
TTL: 1
Entries: 0

Service: proxy
Address: unix:///var/run/weave/weave.sock

Service: plugin (legacy)
DriverName: weave

(14)执行该容器:sudo docker exec -it a4d /bin/bash。并在进入后首先查看是否ip地址正确:(这里是c2)

root@a4d9495dd5f7:/# ifconfig
ethwe: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1376
inet 192.168.10.20 netmask 255.255.255.0 broadcast 192.168.10.255
ether f2:f0:9d:22:f9:90 txqueuelen 0 (Ethernet)
RX packets 25 bytes 3142 (3.1 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1 bytes 42 (42.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

(15)进入测试目录:cd home/dds/Debug,执行:./test_Recv.

posted @ 2022-07-30 21:51  莫莫君不恋爱  阅读(260)  评论(0编辑  收藏  举报