最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

docker network

来源:博客园


(资料图片)

docker network

1、是什么

  1. docker不启动,默认网络情况
    • ens33
    • lo
    • cirbr0
  2. docker启动后,网络情况
    • 多了一个docker0
  • 查看docker网络模式命令
  • docker network ls

2、常用基本命令

  1. All命令
  • docker network --help
  1. 查看网络
  • docker network ls
  1. 查看网络源数据
  • docker network inspect xxx网络名字
  1. 删除网络
  • docker network rm xxx网络名字

3、能干嘛

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

4、网络模式

  1. 总体介绍
  • 简介
  • 网络模式
  • bridge
  • 为每一个容器分配、设置ip等,并将容器连接到一个docker0
  • host
  • 容器将不会虚拟出自己的网卡,配置自己的ip等,而是使用宿主机的ip和端口
  • none
  • 容器独有的Network namespace,但没有对其进行任何网络设置,如分配veth pair和网桥连接,IP等
  • container
  • 新创建的容器不会创建自己的网卡和配置自己的IP,而是和一个指定的容器共享IP、端口范围等
  1. 容器实例内默认网络IP生产规则
    • 说明
    • 创建了两个ubuntu容器实例u1、u2
    • IP分别是172.17.0.2、172.17.0.3
    • 接下来删除u2创建u3
    • 此时u3IP为172.17.0.3
    • 结论
    • docker容器内部的ip是有可能变的
  2. 案例说明
    • bridge
    • docker run -d -p 8081:8080 --name tomcat81 tanshao/tomcat8-jdk8docker run -d -p 8082:8080 --name tomcat82 tanshao/tomcat8-jdk8
    • 两两匹配验证
    • //在容器外面查看ipdocker inspect 容器名//在容器内部查看ip addr
    • host
      • 是什么
        • 直接使用宿主机的 IP 地址与外界进行通信,不再需要额外进行NAT 转换。
        • 容器将不会获得一个独立的Network Namespace, 而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡而是使用宿主机的IP和端口。
      • 代码
        • 警告:docker run -d -p 8083:8080 --network host --name tomcat83 billygoo/tomcat8-jdk8
        • 正确:docker run -d --network host --name tomcat83 billygoo/tomcat8-jdk8
        • 因为在host模式下,使用客户端ip,指定ip不起作用
    • none
      • 禁用网络功能,只有lo标识(就是127.0.0.1表示本地回环)
      • 案例
        • docker run -d -p 8084:8080 --network none --name tomcat84 billygoo/tomcat8-jdk8
    • container
      • 新建的容器和已经存在的一个容器共享一个网络ip配置而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的
      • 案例
        • //错误示例:相当于86、85共用同一个ip端口,导致端口冲突docker run -d -p 8085:8080 --name tomcat85 billygoo/tomcat8-jdk8docker run -d -p 8086:8080 --network container:tomcat85 --name tomcat86 billygoo/tomcat8-jdk8//正确示例:Alpine是一个面向安全的轻型Linux发行版docker run -it --network --name alpine1 alpine /bin/shdocker run -it --network container:alpine1 --name alpine2 alpine /bin/sh
        • 运行结果,验证共用搭桥
        • 假如此时关闭alpine1,再看看alpine2
    • 自定义网络
    • docker run -d -p 8081:8080 --name tomcat81 billygoo/tomcat8-jdk8docker run -d -p 8082:8080 --name tomcat82 billygoo/tomcat8-jdk8
    • 上述成功启动并用docker exec进入各自容器实例内部
    • 问题
    • 按照IP地址ping是OK的
    • 按照服务名ping结果???
    • after
    • 案例
    • 定义桥接网络,自定义网络默认使用的是桥接网络bridge
    • 新建自定义网络
    • 新建容器加入上一步新建的自定义网络
    • docker run -d -p 8081:8080 --network zzyy_network --name tomcat81 billygoo/tomcat8-jdk8
    • docker run -d -p 8082:8080 --network zzyy_network --name tomcat82 billygoo/tomcat8-jdk8
    • 互相ping测试
    • 问题结论
    • 自定义网络本身就维护好了主机名和ip的对应关系(ip和域名都能通)
    • 自定义网络本身就维护好了主机名和ip的对应关系(ip和域名都能通)
    • 自定义网络本身就维护好了主机名和ip的对应关系(ip和域名都能通)

关键词: 对应关系 不起作用