您的位置:MYSQL中文网 > 创建一个docker网络 Docker实例:创建一个点到点连接

创建一个docker网络 Docker实例:创建一个点到点连接

2023-03-25 18:30

创建一个docker网络 Docker实例:创建一个点到点连接

创建一个docker网络

Docker网络是一种用于容器之间通信的技术,它可以让容器之间的通信更加安全、可靠。在创建一个docker网络之前,我们需要先了解docker的几个概念:

1. Docker引擎:Docker引擎是一个用于创建、运行、部署和管理容器的开源软件。
2. Docker容器:Docker容器是一个独立运行的应用,可以在不同的服务器上运行。
3. Docker镜像:Docker镜像是一个只读文件,由多个文件或目录组成,用于创建Docker容

Docker实例:创建一个点到点连接

默认情况下,Docker 会将所有容器连接到由 docker0 提供的虚拟子网中。

用户有时候需要两个容器之间可以直连通信,而不用通过主机网桥进行桥接。

解决办法很简单:创建一对 peer 接口,分别放到两个容器中,配置成点到点链路类型即可。

首先启动 2 个容器:

$ sudo docker run -i -t --rm --net=none base /bin/bash
root@1f1f4c1f931a:/#
$ sudo docker run -i -t --rm --net=none base /bin/bash
root@12e343489d2f:/#

找到进程号,然后创建网络名字空间的跟踪文件。

$ sudo docker inspect -f "{{.State.Pid}}" 1f1f4c1f931a
2989
$ sudo docker inspect -f "{{.State.Pid}}" 12e343489d2f
3004
$ sudo mkdir -p /var/run/netns
$ sudo ln -s /proc/2989/ns/net /var/run/netns/2989
$ sudo ln -s /proc/3004/ns/net /var/run/netns/3004

创建一对 peer 接口,然后配置路由

$ sudo ip link add A type veth peer name B

$ sudo ip link set A netns 2989
$ sudo ip netns exec 2989 ip addr add 10.1.1.1/32 dev A
$ sudo ip netns exec 2989 ip link set A up
$ sudo ip netns exec 2989 ip route add 10.1.1.2/32 dev A

$ sudo ip link set B netns 3004
$ sudo ip netns exec 3004 ip addr add 10.1.1.2/32 dev B
$ sudo ip netns exec 3004 ip link set B up
$ sudo ip netns exec 3004 ip route add 10.1.1.1/32 dev B

现在这 2 个容器就可以相互 ping 通,并成功建立连接。点到点链路不需要子网和子网掩码。

此外,也可以不指定 --net=none 来创建点到点链路。这样容器还可以通过原先的网络来通信。

利用类似的办法,可以创建一个只跟主机通信的容器。但是一般情况下,更推荐使用 --icc=false 来关闭容器之间的通信。

阅读全文
以上是MYSQL中文网为你收集整理的创建一个docker网络 Docker实例:创建一个点到点连接全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 MYSQL中文网 mysqlcn.com 版权所有 联系我们
桂ICP备12005667号-29 Powered by CMS