docker如何实现容器间的跨网络访问

一、docker网络

1、docker网络概述

docker默认有一个虚拟路由docker0,docker0的网络模式就是bridge桥接模式,docker容器之间个主机之间通过这个虚拟路由进行转发,相当于一个局域网;创建容器时docker会为每个容器创建一个虚拟网卡。

2、docker常见的网络模式

bridge:桥接模式
none:不指定网络
host:共享主机网络
container:容器网络

3、docker网络常用命令

docker network --help

二、docker如何实现容器间的跨网络访问

1、查看所有docker网络

docker network ls

2、创建一个不同的network,来模拟容器内不同网段的网络(自定义子网掩码和网关)

docker network create --driver bridge --subnet 192.168.1.0/16 --gateway 192.168.1.0 diffnet

3、用docker0和diffnet启动两个tomcat
 

4、查看不同network下的tomcat容器信息

docker network inspect diffnet   # diffnet 替换成对应的network id或name

docker0网络下对应容器IP:

        docker-tomcat01:172.17.0.4

        docker-tomcat02:172.17.0.5

diffnet网络下对应容器IP:

        diffnet-tomcat01:192.168.0.1

        diffnet-tomcat02:192.168.0.2

5、容器内安装ping命令

进入容器后,无法使用ping命令时,使用下面命令在容器内部进行安装

apt-get update
apt install net-tools       
apt install iputils-ping 

若内部安装失败,可以用以下方式进行ping命令安装

1.在宿主机上使用以下命令手动下载 BusyBox:
wget https://busybox.net/downloads/binaries/1.21.1/busybox-x86_64
2.然后将下载的文件复制到容器内:
docker cp busybox-x86_64 <容器名称或ID>:/usr/local/bin/busybox
3.在容器内创建符号链接并安装 ping 命令:
docker exec -it <容器名称或ID> ln -s /usr/local/bin/busybox /bin/ping
4.给下载的文件授予执行权限:
chmod +x /usr/local/bin/busybox   #容器内执行

6、在容器内使用ping命令检查连通性

检查结果如下:同一网络的可以ping通,其他网段的ping不通

7、将docker0内的容器连接diffnet网络

docker network connect diffnet docker-tomcat01

通过命令查看diffnet信息

 docker network inspect diffnet

通过connect命令docker-tomcat01被添加到了diffnet的元数据中。

重新进入容器docker-tomcat01,对不同网络进行ping命令连通性测试,结果如下:

由此,docker容器间的跨网络访问功能已实现。

猜你喜欢

转载自blog.csdn.net/qq_54494363/article/details/132601636