Docker网络

10 篇文章 0 订阅

Docker网络

# 查看网络情况
ip addr
# 查看容器IP地址
docker exec -it [container_name] ip addr
# 查看容器大的network id
docker network ls

容器代理的网卡是成对的
evth-pair 一对虚拟设备接口,一段连接协议,一段连彼此连接。充当桥梁连接各种虚拟设备。Openstac,Docker容器之间的连接,ovs的连接,都是使用evth-pair技术。
容器和容器间是联通的,可以通过ping命令来测试。

ping [ip_addr]

在这里插入图片描述

Docker使用的是
桥接的结构图,如下,应docker0作为转发的路由实现容器相互之前的桥接。所有的容器不指定指定网络道德情况下,都是docker0路由的,docker会给我们分欸一个默认的可用IP。
在这里插入图片描述Docker中的所有的网络接口都是虚拟的。内网转发效率高。只要容器删除,对应网桥就消失了。
在这里插入图片描述

--link联通容器

# 创建tomcat03连上tomcat02,单向连接
docker run -d -P --name tomcat03 --link tomcat02 tomcat
# 查看docker的网络网卡
docker network ls
# 查看docker网络的详细信息
docker network inspect [network_id]
# 查看hosts配置
docker exec -it tomcat03 cat /etc/hosts

子网和网关地址
在这里插入图片描述
容器具体的IP分配情况
在这里插入图片描述--link在容器中的hosts配置上hosts映射

自定义网络

# 查看docker网络相关的命令
docker network --help
# 查看所有的docker网络
docker network ls

网络模式
bridge:桥接docker(默认,自己创建也使用bridge模式)
none: 不配置网络
host:和宿主机共享网络
container:容器网络连通

# 直接启动相当于默认使用 --net bridge
docker run -d -P --name tomcat01 tomcat
docker run -d -P --name tomcat01 --net bridge tomcat

# docker0 特点:默认,域名不能访问,--link可以打通连接
# 查看创建命令
docker network create --help

# 自定义网络
# --driver 设置网络模式
# --subnet 设置子网 192.168.0.0/16  192.168.0.2 ~192.168.255.255
# --getway 设置网关
docker network create --dirver bridge --subnet 192.168.0.0/16 --getway 192.168.0.1 mynet

# 在未来的项目中直接使用网卡
docker run -d -P --name tomcat02 --net mynet tomcat

好处
redis 不同的集群使用不同的网络,保证集群是安全和健康的
mysql 不同的集群使用不同的网络,保证集群是安全和健康的

网络连通

docker network --help
# 连接隔离网段,查看具体参数
docker network connect  --help
# 连接容器与网卡,将tomcat01放到mynet下,一个容器两个ip
docker network connect  mynet tomcat01
# 查看具体网卡情况
docker network inspect mynet

redis集群部署

分片+高可用+负载均衡,一共6各rides

在这里插入图片描述

创建子网

# 创建redis子网
docker network create redis --subnet 172.38.0.0/16
# 查看子网情况
docker network inspect redis

创建shell脚本

# 创建配置文件
for port in $(seq 1 6); \
do \
mkdir -p /mydata/redis/node-${port}/conf
touch /mydata/redis /node-${port}/conf/redis.conf
cat << EOF >/mydata/redis/node-${port}/conf/redis.conf
port 6379
bind 0.0.0.0
cluster-enab1ed 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循环启动容器
for port in $(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.1${port} redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
done

单个容器启动,for循环中的循环体

# 启动单个容器,镜像redis:5.0.9-alpine3.11
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

创建集群

# 进入容器
docker exec -it redis-1 /bin/bash
# 如果没有bash命令使用sh
docker exec -it redis-1 /bin/sh
# 创建集群
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
# 连接集群 -c连接的是集群
redis-cli -c
# 查看集群信息 
cluster info
# 查看节点
cluster nodes
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈勇劲

你的鼓励实我最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值