发布镜像到DockerHub:
aaa2222339;qweewq123
打完标签后会生成新的镜像
docker push 镜像名
发布镜像到阿里云容器服务:
Docker0网络:
ip中:.../20,前20位是网络号
2是外面linux的地址,docker0是外面的docker0(桥梁bridge)地址,docker启动后,docker0就出现了,容器之间的ping是都得通过docker0,新建的容器的ip也能在外面通过ip addr看到
通过ip地址,里外可以ping,容器间可以ping,但是通过名字没法访问:
docker0做gateway
查看网络详细信息
docker network ls
docker network inspect 网卡:
如何通过名字ping
方式1: --link
桥接:1通过2(桥)和3连接
方式2:自定义网络:
启动2个容器并加入到自定义网络mynet里面
跨网络连通:
Redis集群部署:
上面3个主机,下面3个从机,主机坏了从从机替换,此处对应6个容器,3个集群,脚本文件是创建1个子网,定义6个节点文件,启动6个节点并加入到子网中,
先创建一个子网 redis,${变量名}取出变量值,
往file中输入:
a
b
c
的命令是cat << EOF > file
a
b
c
EOF
0.0.0.0代表所有ip,bind它 表示不管访问本机的那个网卡的ip,都能访问到该 redis 服务器
cluster-enabled:开启集群模式
cluster-config-file:集群配置文件的名称
cluster-node-timeout:节点互连超时的阀值
announce..:该节点在集群内的地址
-p的对外映射对于集群没什么帮助
此处的集群内节点ip=容器ip(--ip设置)
#!/bin/bash
docker network create redis --subnet 172.38.0.0/16
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-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
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:6.2-alpine3.16 redis-server /etc/redis/redis.conf
done
进入到一个节点
docker exec -it redis-1 /bin/sh
将这6个节点放到一个集群里,集群会自动分配这6个点为上图的3主3从
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
然后从该节点连接进入集群,并让一个主节点失效,测试高可用:
SpringBoot微服务打包Docker镜像: