メインコンテンツにスキップ

文書の詳細情報

  • 単純なプロセス
    • todo:がymlファイル内のIPが正確でないかを覚えていますか?

# 启动节点
docker stack deploy -c redis.yml redis-cluster

# 搭建集群(自动拼接端口的方式)
docker exec -it $(docker ps -qf "name=redis-cluster_redis1.1") redis-cli --cluster create $(for index in {1..6}; do echo "10.0.16.17:700${index}"; done) --cluster-replicas 1 -a foobared

# 查看集群是否健康
docker exec -it $(docker ps -qf "name=redis-cluster_redis1.1") redis-cli -p 7001 -a foobared cluster info

### 测试执行命令
docker exec -it $(docker ps -qf "name=redis-cluster_redis1.1") redis-cli -c -p 7001 -a foobared info Replication

  • yes を自動的に入力します。
# 自动拼接并输入yes执行命令

# 方式一
yes yes | docker exec -i $(docker ps -qf "name=rds-cluster_redis1.1") redis-cli --cluster create $(docker inspect -f '{{.NetworkSettings.Networks.middleware.IPAddress}}:{{range $p, $conf := .NetworkSettings.Ports}}{{if eq (index (split $p "/") 0 | printf "%.3s") "800"}}{{(index (split $p "/") 0)}}{{end}}{{end}}' $(docker ps -qf "name=rds-cluster_redis")) --cluster-replicas 0 -a foobared

# 方式二
docker exec -i $(docker ps -qf "name=rds-cluster_redis1.1") redis-cli --cluster create $(docker inspect -f '{{.NetworkSettings.Networks.middleware.IPAddress}}:{{range $p, $conf := .NetworkSettings.Ports}}{{if eq (index (split $p "/") 0 | printf "%.3s") "800"}}{{(index (split $p "/") 0)}}{{end}}{{end}}' $(docker ps -qf "name=rds-cluster_redis")) --cluster-replicas 0 -a foobared << EOF
yes
EOF

  • 指定したプレフィックスを削除
    • grep の -o パラメーターは一致する文字列のみ印刷されます
    • xargs -r引数の入力がない場合、xargs命令は実行されません。
docker volume ls | grep -o "redis-cluster.*" | xargs -r docker volume rm