Docker网络

本质就是host映射(容器内 cat /etc/hosts),不推荐使用。

方式2:自定义网络

不使用docker0,因为docker0为官方网桥,其功能有局限性;比如docker0不支持容器名连接访问。

# help
docker network --help
# 查看所有docker网络
docker network ls

网络模式:

  • bridge:桥接;docker默认
  • host:和宿主机共享网络
  • none:不配置网络

创建一个自定义网络:

好处:不同的集群使用不同的网络,保证集群的安全、健康。

  •   docker network create --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet(默认是bridge类型)
    
  •   docker network inspect mynet(即可查看刚才创建的网络信息)
    
  • 创建容器时指定我们自定义的网络

    •   docker run -d -P --name tomcat01 --network mynet tomcat
      
    •   docker run -d -P --name tomcat02 --network mynet tomcat
      
    •   # 即可看到tomcat01和tomcat02的网络用的就是我们分配的
        docker network inspect mynet
      
    •   # 可以看到可以ping通
        docker exec -it tomcat01 ping tomcat02
      

网络连通:

容器tomcat01tomcat-mynet-01对应不同的网络,如下:

容器tomcat01 			--> 	docker0网络(172.18.0.1)
容器tomcat-mynet-01	--> 	mynet网络(192.168.0.1)

可以知道 tomcat01 是连不通 tomcat-mynet-01 的,那么该怎么做呢?

docker network connet mynet tomcat01 

相当于给 tomcat01 加了一个 ip 地址(一个容器,两个ip)。

3.实战:搭建redis集群

  • 1.创建网卡

    docker network create redis --subnet 172.20.0.0/16 --gateway 172.20.0.1
    
  • 2.通过脚本创建6个redis配置

    for i in $(seq 1 6); \
    do \
    mkdir -p /test/redis/node-${i}/conf
    touch /test/redis/node-${i}/conf/redis.conf
    cat << EOF > /test/redis/node-${i}/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.20.0.1${i}
    cluster-announce-port 6379
    cluster-announce-bus-port 16379
    appendonly yes
    EOF
    done
    
  • 3.启动6个redis

    for i in $(seq 1 6); \
    do \
    docker run -p 637${i}:6379 -p 1637${i}:16379 --name redis-${i} \
    -v /test/redis/node-${i}/data:/data \
    -v /test/redis/node-${i}/conf/redis.conf:/etc/redis/redis.conf \
    --network redis --ip 172.20.0.1${i} \
    -d redis redis-server /etc/redis/redis.conf
    done
    
  • 4.进入任一redis容器

    docker exec -it redis-1 /bin/sh
    
  • 5.创建集群

    redis-cli --cluster create 172.20.0.11:6379 172.20.0.12:6379 172.20.0.13:6379 172.20.0.14:6379 172.20.0.15:6379 172.20.0.16:6379 --cluster-replicas 1
    
  • 客户端连接,-c 代表连接集群

    redis-cli -c
    
posted @ 2020-09-26 17:33    阅读(97)  评论(0编辑  收藏  举报