zoukankan      html  css  js  c++  java
  • Docker网络

    Docker网络

    [root@localhost /]# docker network help
    
    Usage:  docker network COMMAND
    
    Manage networks
    
    Commands:
      connect     Connect a container to a network
      create      Create a network
      disconnect  Disconnect a container from a network
      inspect     Display detailed information on one or more networks
      ls          List networks
      prune       Remove all unused networks
      rm          Remove one or more networks
    
    Run 'docker network COMMAND --help' for more information on a command.
    
    

    Docker0

    清空所有环境,以方便测试

    image-20201228191235484

    原理

    1、我们每启动一个docker容器,docker就会给docker容器分配一个ip,我们只要安装了docker,就会有一个网卡docker0桥接模式,使用的技术是evth-pair技术!

    我们发现这个容器带来网卡,都是一对对的
    evth-pair就是一对的虚拟设备接口,他们都是成对出现的,一端连着协议,一端彼此相连
    正因为有这个特性,evth-pair充当一个桥梁,连接各种虚拟网络设备的
    Openstac,Docker容器之间的连接,oVs的连接,都是使用evth-pair技术

    Docker0网络模型

    img

    小结

    Docker使用的是Linux的桥接,宿主机zhong是一个Docker容器的网桥docker0

    docker中的所有网络接口都是虚拟的,虚拟的转发效率高

    只要容器删除,对应网桥也会自动删除

    image-20201228192423850

    --link技术

    docker run -d -P --name tomcat03 --link tomcat02  tomcat   # 这样可以tomcat03可以ping通tomcat02  反向不可以
    

    就是在hosts文件中添加了一条映射

    [root@shop /]# docker exec -it tomcat03 cat /etc/hosts
    127.0.0.1localhost
    ::1localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0ip6-mcastprefix ff02::1ip6-allnodes ff02::2 ip6-allrouters
    172.18.0.3  tomcat02 312857784cd4
    172.18.0.4 5ca72d80ebb0
    

    自定义网络

    查看所有的docker网络

    image-20201228193732812

    网络模式:

    • bridge 桥接(默认)
    • none 不配置网络
    • host 宿主机模式,共享宿主机网络
    • container:容器网络连通!(用的少!局限性很大)

    创建网络

    #我们直接启动的命令会有一个默认参数  --net bridge
    docker run -d -P --name tomcat01 --net bridge tomcat
    
    #自定义一个网络
    [root@localhost /] docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
    e27aab4b501fbf7cca77d81dcb49876b62e386f3901ebf90b831f72f73d46a04
    [root@localhost /] docker network ls
    NETWORK ID     NAME      DRIVER    SCOPE
    ffd0e491486c   bridge    bridge    local
    fb1f1bc9e3cf   host      host      local
    e27aab4b501f   mynet     bridge    local
    f6f0f3681dae   none      null      local
    

    网络联通

    [root@localhost /]# docker network connect --help
    
    Usage:  docker network connect [OPTIONS] NETWORK CONTAINER
    
    Connect a container to a network
    
    Options:
          --alias strings           Add network-scoped alias for the container
          --driver-opt strings      driver options for the network
          --ip string               IPv4 address (e.g., 172.30.100.104)
          --ip6 string              IPv6 address (e.g., 2001:db8::33)
          --link list               Add link to another container
          --link-local-ip strings   Add a link-local address for the container
    
    
    docker connect  网络名称  容器名   # 将容器添加到网络中
    docker connect  mynet    nginx01
    

    实战 部署Redis集群

    image-20201228201105599

    # 创建网卡
    docker network create redis --subnet 172.38.0.0/16
    #创建六个redis配置
    for port in s(seq 1 6);
    do
    mkdir -p /mydata/redis/node-${port}/conf 
    touch/mydata/redis/node-${port}/conf/redis.conf 
    cat << EOF > /mydata/redis/node-s{port}/conf/redis.conf 
    port 6379
    bind 0.0.0.0
    cluster-enabled yes 
    cluster-config-file nodes.conf 
    cluster-node-timeout 5000
    cluster-announce-ip 172.38.0.1${port}
    cluster-announce-port 6379
    cluster-announce-bus-port 16379
    appendonly yes 
    EOF 
    done
    
    # 一键启动
    for port in s(seq 1 6);
    do
    docker run -p 637${port}:6379 -p 1637${port}:16379--name redis-${port}  
    -v /mydata/redis/node-${port}/data:/data 
    -v /mydata/redis/node-${port}/conf/redis.conf:/etc/redis/redis.conf 
    -d--net redis--ip 172.38.0.1s{port} redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf;
    done
    
    # 单个启动01
    docker run-p 6371:6379-p 16371:16379 --name redis-1 
    -v /mydata/redis/node-1/data:/data 
    -v /mydata/redis/node-1/conf/redis.conf:/etc/redis/redis.conf  
    -d --net redis --ip 172.38.0.11 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
    
    # 单个启动02
    docker run-p 6372:6379-p 16372:16379 --name redis-2 
    -v /mydata/redis/node-2/data:/data 
    -v /mydata/redis/node-2/conf/redis.conf:/etc/redis/redis.conf  
    -d --net redis --ip 172.38.0.12 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
    
    # 进入其中一台机器
    docker exec -it redis-1 /bin/sh
    # redis创建集群
    redis-cli --cluster create 172.38.0.11:6379  172.38.0.12:6379  172.38.0.13:6379  172.38.0.14:6379   172.38.0.15:6379  172.38.0.16:6379  --cluster-replicas 1
    # 连接集群
    redis-cli -c
    

    SpringBootBoot微服务打包镜像

    1、构架springboot项目2、打包应用
    3、编写dockerfile
    4、构建镜像
    5、发布运行!!

    FROM java:8
    COPY *. jar /app. jar CMD ["--server. port=8080"]
    EXPOSE 8080
    ENTRYPOINT  ["java","-jar","/app.jar"]
    
  • 相关阅读:
    Lambda表达式 Lambda expression(1)
    解密随机数生成器(2)——从java源码看线性同余算法(转)
    解密随机数生成器(1)——真随机数生成器(转)
    HTML标签 table(4)
    HTML标签详解(3)
    Flink DataStream API
    Apache Flink Watermark
    Flink核心概念
    Flink SQL and Table
    Hive ORC File Format
  • 原文地址:https://www.cnblogs.com/cuianbing/p/14468950.html
Copyright © 2011-2022 走看看