一、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容器间的跨网络访问功能已实现。