> 技术文档 > Docker Network的学习

Docker Network的学习


Docker Network的学习

学习了前辈的文章docker网络配置:bridge模式、host模式、container模式、none模式 - 熊仔其人 - 博客园,在这里记录一下

一. 常用命令说明

命令 说明 docker create docker network list 查看网络列表 docker inspect [容器 / 网络] 查看网络信息 docker network connect [网络] [容器] 将某个容器加入到指定网络中 docker rm [网络] 删除网络 docker disconnect [网络] [容器] 将某个容器从某个网络中移除

二. Network模式介绍

网络模式 说明 示例 bridge 默认模式,会基于docker 0 给每个容器分配IP,通过指定的端口映射进行网络互通 docker run -d --name tomcat01 --network=bridge -p 8086:8080 tomcat:8.0.52 host 不分配IP给每个容器,容器直接通过宿主机的端口与外界互通 docker run -d --name tomcat02 --network=host tomcat:8.0.52 container 使用某个容器的网络配置,不分配IP给这个容器,通过指定的容器和宿主机进行网络互通 docker run -d --name tomcat03 --network=container:tomcat02 tomcat:8.0.52 none 不和外界进行网络互通 docker run -d --name tomcat04 --network=none tomcat:8.0.52 自定义网络 默认使用的是bridge,通过自定义网络,容器建可以直接通过服务名(容器名)去和其他容器进行网络互通 请看下文

以下是我个人的理解,如果有不正确的,希望各位大神指出

2.1 Bridge

在这里插入图片描述

2.2 Host

Host 和 Bridge 的区别是,Bridge会给容器分配IP,且可以指定映射的端口,但是Host并不会给每个容器分配IP,并且也无法指定映射的端口,只能使用默认的端口映射,这可能导致端口冲突

在这里插入图片描述

2.3 Container

我的理解是,像是容器B连接了容器A的热点,容器B可以通过容器A和宿主机进行网络互通,是不会单独分配IP的

在这里插入图片描述

2.4 None

容器不和外界进行网络互通

三. 自定义网络

3.1 创建网络

docker network create test_network

3.2 配置两台tomcat,使用上述Network

注意在配置中修改Tomcat的端口

docker run -d -p 8086:8086 -v /mydata/tomcat/conf/:/usr/local/tomcat/conf/ --name tomcat01 --network=test_network tomcat:8.0.52
docker run -d -p 8086:8086 -v /mydata/tomcat/conf1/:/usr/local/tomcat/conf/ --name tomcat02 --network=test_network tomcat:8.0.52

3.3 测试

进入任意一个容器,可以通过容器名直接ping另外一个容器

docker exec -it tomcat01 /bin/bashping tomcat02

在这里插入图片描述