宿主机默认的网络情况


docker有哪几种网络模式 docker networkmode_docker有哪几种网络模式


启动docker后查看网卡信息

会产生一个名为docker0的虚拟网桥


docker有哪几种网络模式 docker networkmode_自定义_02


network命令


docker有哪几种网络模式 docker networkmode_docker_03


docker network ls 
查看本地配置的network,默认是下面几个 bridge  host bridge 默认是bridge,还有一种是自定义的


docker有哪几种网络模式 docker networkmode_docker_04


docker network inpect bridge可以查看该网络段配置的容器以及网段ip地址


docker有哪几种网络模式 docker networkmode_Powered by 金山文档_05


docker network creat [networkName]
创建一个新的network网络
docker network creat --driver host  [networkName]
指定driver模式创建,默认是bridge,当然了默认只能存在一个host本地网络
docker network rm [networkName]
删除本地的network

network可以做到一下几点:

容器间的互相通信以及端口映射
容器ip变动的时候可以通过服务名直接网络通信而不受到影响

network网络模式


bridge模式:使用--network bridge指定,默认使用docker0
bridge 为每一个容器分配、设置ip等,并将容器链接到一个docker0 虚拟网桥,默认为该模式

host 容器将不会虚拟出自己的网卡,配置自己的ip等,而是使用宿主机的ip和端口host模式: 使用--network host指定

none 容器有独立的network namespace 但并没有对其进行任何网络设置,如分配veth pair 和网桥链接ip 等,在none模式下,并不为Docker容器进行任何网络配置。
也就是说,这个Docker容器没有网卡、IP、路由等信息,只有一个lo需要我们自己为Docker容器添加网卡、配置IP等。
none模式 : 使用--network none指定

container 新常见的容器不会创建自己的网卡和配置自己的ip 而是和一个指定的容器共享ip 端口范围等container模式,
新建的容器和已经存在的一个容器共享一个网络ip配置而不是和宿主机共享,使用--network container:NAME或者容器id指定

docker run -d -p 8083:8080 --network host --name tomcat billygoo/tomcat8-jdk8

docker-compose里创建指定使用的network

使用存在的网络,已经创建好的

networks:
  default:
    external:
      name: es-cluster

加入下面的外部网络声明

networks:
  es-cluster:
    external: true

使用创建好的network

networks:
     - es-cluster

network自定义网络配置

before 案例:

docker run -d -p 8081:8080   --name tomcat81 billygoo/tomcat8-jdk8
docker run -d -p 8082:8080   --name tomcat82 billygoo/tomcat8-jdk8

上述成功启动并用docker exec进入各自容器实例内部,看一下 使用ip能否ping通 使用服务名 是否可以ping通


docker有哪几种网络模式 docker networkmode_tomcat_06


docker有哪几种网络模式 docker networkmode_自定义_07


通过服务名是ping不通的

自定义桥接网络,自定义网络默认使用的是桥接网络bridge

docker run -d -p 8081:8080 --network yuki_dockernetwork  --name tomcat81 billygoo/tomcat8-jdk8
docker run -d -p 8082:8080 --network yuki_dockernetwork  --name tomcat82 billygoo/tomcat8-jdk8


docker有哪几种网络模式 docker networkmode_docker_08


自定义网络本身就维护好了主机名和ip的对应关系 所以ip 和域名都能通