zoukankan      html  css  js  c++  java
  • docker网络实践

    docker网络.md

    #docker 网络模式

    环境 centos7.4 , Docker version 17.12.0-ce

    docker自带网络类型 bridge,host,none,container,overlay,macvlan

    #本地网络

    bridge 		# --net=bridge 默认模式,NAT转发
    host 		# --net=host 使用宿主机网络
    container 	# --net=container:容器名或ID ,共用其它容器网络
    none 		# --net=none 无网卡
    

    #跨主机网络

    overlay  #vxlan模式
    macvlan  #使用外部lan,需手动配置
    #可以使用其它网络插件
    

    #查看docker网络

    docker network ls
    

    #docker修改本地默认网段

    #docker启动默认创建docker0网桥172.17网段
    #添加自定义网段
    SetOPTS=" --bip=192.168.55.1/24"
    sed  -i "s#^ExecStart.*#& $SetOPTS #" /usr/lib/systemd/system/docker.service
    grep 'ExecStart' /usr/lib/systemd/system/docker.service
    #重启docker
    systemctl daemon-reload
    systemctl restart docker
    
    ifconfig docker0 |egrep 'inet |flags'  #查看docker0网桥ip已改
    #可使用自定义网桥,创建br0,修改配置 -b=br0
    

    #docker本地网络实践

    #不指定网络,使用默认bridge
    docker run -dit --name busybox1 busybox
    docker exec -it busybox1 ifconfig  #查看网络
    
    #host网络
    docker run -dit --name busybox-host --net=host busybox
    docker exec -it busybox-host ifconfig  #查看网络,与宿主机一样
    
    #container网络
    docker run -dit --name busybox2 --net=container:busybox1 busybox #使用busybox1网络
    docker exec -it busybox1 ifconfig  #查看网络
    
    #none没网络
    docker run -dit --name busybox-none --net=none busybox
    docker exec -it busybox-none ifconfig
    

    #创建本地网络mynet1(自定义网络能设置固定ip)

    docker network create --subnet 192.168.58.0/24 --gateway 192.168.58.1 mynet1
    docker run -dit --name busybox3 --network mynet1 --ip=192.168.58.18 busybox
    docker exec busybox3 ifconfig |egrep 'inet|flags'  #查看容器网络
    

    #docker 容器 添加网卡

    docker network connect mynet1 --ip 192.168.58.8 busybox1  #给容器添ip
    docker exec $(docker ps -l -q) ifconfig |egrep 'inet|flags'  #查看网络
    docker network disconnect mynet1 busybox1  #断开网络,再次查看网络……
    

    #删除测试容器、网络

    docker rm -f busybox1 busybox2 busybox3 busybox-host busybox-none
    docker network rm mynet1
    

    #docker跨主机通信

    #overlay网络

    本次在docker swarm集群操作

    创建docker swarm 集群参考http://www.cnblogs.com/elvi/p/8424378.html

    docker swarm集群创建容器,会自动创建overlay网络ingress

    docker network ls #查看网络

    #创建overlay类型网络mynet2,并设置网段、网关

    docker network create -d overlay --subnet 192.168.59.0/24 --gateway 192.168.59.1 mynet2
    docker network inspect mynet2  #查看网络参数
    

    #swarm集群使用自定义网段mynet2

    docker service create --name nginx2  --replicas 2 
      -p 81:80 --network mynet2 hub.test.com:5000/almi/nginx:0.1
    #hub.test.com:5000/almi/nginx:0.1 为内网私有仓库镜像
    docker service ls
    #swarm集群创建容器默认2个网卡,增加了自定义网卡
    docker exec $(docker ps -l -q) ifconfig |egrep 'inet|flags'  #查看网络
    

    #删除测试

    docker service rm nginx2
    docker network rm mynet2
    docker network prune  #删除未使用的网卡
    

    # macvlan网络

    #宿主机开启网卡混杂模式

    ip link set eth0 promisc on
    ifconfig eth0 |egrep 'inet |flags'
    

    #创建macvlan模式网络macnet

    docker network create -d macvlan -o parent=eth0 macnet 
     --subnet 172.16.50.0/24 --gateway 172.16.50.1
    

    #创建容器

    docker run -d --name nginx3 --net macnet hub.test.com:5000/almi/nginx:0.1
    docker exec nginx3 ping -c 4 nginx3  #测试获取ip成功
    #其它docker节点创建网络、容器,然后ping测试
    

    #删除测试

    docker rm -f $(docker ps -l)
    docker network rm macnet
    

    本次macvlan测试环境为虚拟机,获取外部vlan失败

    宿主机配置vlan网络+macvlan模式,实现docker vlan网络

    使用macvlan,无法与宿主机通信

  • 相关阅读:
    Vue 学习笔记之 —— 组件(踩了个坑)
    Vue 学习笔记之 —— 表单输入绑定
    js cookie
    python中线程、进程和协程的区别
    设计模式
    Mysql从入门到精通整理
    如何处理缓存失效、缓存穿透、缓存并发等问题
    mysql 查询当天、本周,本月,上一个月的数据
    Mysql分表和分区的区别、分库分表介绍与区别(转)
    mysql数据库死锁的产生原因及解决办法
  • 原文地址:https://www.cnblogs.com/elvi/p/8442890.html
Copyright © 2011-2022 走看看