Docker网络(三)

一、计算机网络模型

  1. 在这里插入图片描述
  2. 在这里插入图片描述

二、Linux中网卡

  1. 查看网卡详情命令:ip link show
    在这里插入图片描述

  2. 查询网卡:ls /sys/class/net
    在这里插入图片描述

  3. 查看ip信息: ip a
    在这里插入图片描述

  4. 状态 UP/DOWN/UNKNOW
    link/ether:MAC地址
    inet :ip地址

  5. 我们可以通过修改文件或者命令的方式改ip地址
    文件:/etc/sysconfig/network-scripts目录下
    命令:新增ip addr add 192.168.0.110/24 dev eth0 删除ip addr delete 192.168.0.110/24 dev eth0

  6. 网卡的启动/停止
    重启网卡:systemctl restart network
    启动/停止某个网卡: ifup/ifdown eth0 or ip link set eth0 up/down

二、Linux中的Network namespace

  1. namespace:用于隔离网络

  2. 查看当前主机netns列表:ip netns list
    在这里插入图片描述

  3. 新增netns:ip netns add ns3
    在这里插入图片描述

  4. 删除netns:ip netns delete ns3
    在这里插入图片描述

  5. 查看namespace为ns1的ip:ip netns exec ns1 ip a
    在这里插入图片描述

  6. 启动ns1的本地lo(loopback回环):ip netns exec ns1 ifup lo or ip netns exec ns1 ip link set lo up
    在这里插入图片描述

  7. 再启动ns2

  8. 列出结构
    在这里插入图片描述

  9. 使用veth-pair(VirtualEthernet-pair)技术
    sudo ip link add veth-ns1 type veth peer name veth-ns2

  10. 查看当前网卡:ip link list
    在这里插入图片描述

  11. 将veth-ns1和veth-ns2分别设置到ns1和ns2中
    ip link set veth-ns1 netns ns1 ip link set veth-ns2 netns ns2
    在这里插入图片描述

  12. 此时ns1和ns2的只有网卡 却没有ip地址,所以要给他们ip
    ip netns exec ns1 ip addr add 192.168.0.22/24 dev veth-ns1
    ip netns exec ns2 ip addr add 192.168.0.23/24 dev veth-ns2

  13. 当前网卡还是DOWN状态 我们启动它
    ip netns exec ns1 ip link set veth-ns1 up
    ip netns exec ns2 ip link set veth-ns2 up

  14. 查看网卡veth-ns1和veth-ns2
    ip netns exec ns1 ip link
    ip netns exec ns2 ip link
    在这里插入图片描述

  15. 验证:互相ping一下
    ip netns exec ns1 ping 192.168.0.23
    ip netns exec ns2 ping 192.168.0.22
    在这里插入图片描述
    可以ping通
    在这里插入图片描述

四、深入分析Docker(单机)–Container中网络bridge

  1. 我们先创建两个container,看看他们能不能ping的通
    docker run -d --name=tomcat01 -p 8080:8080 tomcat
    docker run -d --name=tomcat02 -p 8081:8080 tomcat
    docker exec -it tomcat01 ip a =172.18.0.2
    exit
    docker exec -it tomcat02 ip a =172.18.0.3
    exit
    docker exec -it tomcat01 ping 172.18.2.3
    docker exec -it tomcat02 ping 172.18.2.2
    在这里插入图片描述
  2. 在centos中去ping tomcat01和tomcat02
    ping 172.18.2.2
    ping 172.18.2.3
    在这里插入图片描述
    centos和他们属于不同的Network NameSpace,是如何连接的?
  3. centos中的docker0的veth69d7573@if156和tomcat01中的eth0@if157是成对存在的
    在这里插入图片描述
  4. tomcat01和tomcat02能ping通
    在这里插入图片描述
  5. 因此使用Bridge模式
    我们查看下docker中的网络模式(默认bridge)
    docker network list
    在这里插入图片描述
  6. 检查一下bridge
    docker network inspect bridge
    在这里插入图片描述
  7. 在docker中创建自己的bridge
    docker network create my-network or docker network create --subnet=172.19.0.0/24 my-network
    在这里插入图片描述
  8. 创建一个容器指定用my-network
    docker run -d --name=network-tomcat03 -p 8083:8080 --network=my-network tomcat
  9. 查看这个容器网络
    docker exec -it network-tomcat03 ip a
    在这里插入图片描述
  10. 在network-tomcat03中去ping tomcat01互相发现ping不通
    只需要将tomcat01加入到my-network中就可以
    docker network connect my-network tomcat01
    在这里插入图片描述
    在这里插入图片描述
  11. 此时不但可以用ip去ping network-tomcat03还可以用名字
    在这里插入图片描述

五、深入分析Docker(单机)–Container中网络host & none

  1. 创建容器指定用host
    docker run -d --name=tomcat04 -p 9090:8080 --network=host tomcat
    在这里插入图片描述
    用的是centos的网络
    检查下docker host
    在这里插入图片描述
  2. 创建一个容器 指定用 none
    docker run -d --name=tomcat05 -p 9091:8080 --network=none tomcat
    在这里插入图片描述
    检查下docker none
    在这里插入图片描述
    none 网络不能和别人连接
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值