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

    #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,无法与宿主机通信
  • 相关阅读:
    [网络]公共网络安全漏洞库: CVE / CNCVE
    [网络/SSH]OpenSSH: sshd / sftp-server / ssh-agent | ssh / scp / sftp
    [网络/WebServer/Nginx]代理模式:正向代理与反向代理
    [数据库/MySQL]解决异常:Data truncation: Truncated incorrect DOUBLE value: 'dc5'
    [Java EE]Spring Boot 与 Spring Cloud的关系/过去-现在-未来
    [Java SE]Java8新特性——默认方法
    [Java SE]javac编译时编码错误
    [灾备]独立磁盘阵列(RAID)技术
    [Nginx]安装第三方调试模块——echo | #解决异常#unknown directive “echo”
    [Linux]常用命令之【source】
  • 原文地址:https://www.cnblogs.com/kcxg/p/10794423.html
Copyright © 2011-2022 走看看