shell 脚本
# 创建网卡
docker network create redis --subnet 172.38.0.0/16
# 创建完之后可以查看一下,[root@localhost ~]# docker network ls
# 查看redis配置 [root@localhost ~]# docker network inspect redis
# 通过脚本创建六个redis配置
# for 循环6次,因为创建六个redis配置
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
done
# 接下来启动容器
# 可以用这个做脚本,Python编程,批量运行容器
[root@localhost ~]# 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; \
# 以下的容器启动过程可以用python编个脚本执行,很简单
[root@localhost ~]# 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
[root@localhost ~]# 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
[root@localhost ~]# docker run -p 6373:6379 -p 16373:16379 --name redis-3 \
-v /mydata/redis/node-3/data:/data \
-v /mydata/redis/node-3/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.13 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
[root@localhost ~]# docker run -p 6374:6379 -p 16374:16379 --name redis-4 \
-v /mydata/redis/node-4/data:/data \
-v /mydata/redis/node-4/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.14 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
[root@localhost ~]# docker run -p 6375:6379 -p 16375:16379 --name redis5 \
-v /mydata/redis/node-5/data:/data \
-v /mydata/redis/node-5/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.15 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
[root@localhost ~]# docker run -p 6376:6379 -p 16376:16379 --name redis-6 \
-v /mydata/redis/node-6/data:/data \
-v /mydata/redis/node-6/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.16 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
# 创建集群
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
# 创建集群代码及运行过程
/data # 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
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 172.38.0.15:6379 to 172.38.0.11:6379
Adding replica 172.38.0.16:6379 to 172.38.0.12:6379
Adding replica 172.38.0.14:6379 to 172.38.0.13:6379
M: 43362f7068a0318c81705e6b1d4ed9fe8235e3ec 172.38.0.11:6379
slots:[0-5460] (5461 slots) master
M: 3062e9bbc8f3b4af1e9b4be85a5cfe42deb86543 172.38.0.12:6379
slots:[5461-10922] (5462 slots) master
M: ab3fd407c91b53077117f2d4e81a3c52c2082d99 172.38.0.13:6379
slots:[10923-16383] (5461 slots) master
S: b7ad902f534c30879eaeb27afb7b364c114369b4 172.38.0.14:6379
replicates ab3fd407c91b53077117f2d4e81a3c52c2082d99
S: 46852447ade8944c1b565dad320b974d70fd9b43 172.38.0.15:6379
replicates 43362f7068a0318c81705e6b1d4ed9fe8235e3ec
S: 7b2915b456a5d3663df65d878721fcb5659a91ba 172.38.0.16:6379
replicates 3062e9bbc8f3b4af1e9b4be85a5cfe42deb86543
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
...
>>> Performing Cluster Check (using node 172.38.0.11:6379)
M: 43362f7068a0318c81705e6b1d4ed9fe8235e3ec 172.38.0.11:6379
slots:[0-5460] (5461 slots) master
1 additional replica(s)
M: ab3fd407c91b53077117f2d4e81a3c52c2082d99 172.38.0.13:6379
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: 46852447ade8944c1b565dad320b974d70fd9b43 172.38.0.15:6379
slots: (0 slots) slave
replicates 43362f7068a0318c81705e6b1d4ed9fe8235e3ec
M: 3062e9bbc8f3b4af1e9b4be85a5cfe42deb86543 172.38.0.12:6379
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
S: b7ad902f534c30879eaeb27afb7b364c114369b4 172.38.0.14:6379
slots: (0 slots) slave
replicates ab3fd407c91b53077117f2d4e81a3c52c2082d99
S: 7b2915b456a5d3663df65d878721fcb5659a91ba 172.38.0.16:6379
slots: (0 slots) slave
replicates 3062e9bbc8f3b4af1e9b4be85a5cfe42deb86543
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
/data #
进入相应的文件夹,打开配置文件reids.conf,效果如下:
docker 搭建redis集群完成
请注意: master 172.38.0.13 fail , 172.38.0.14 slave 自动变为master
总结:因此有了docker容器技术之后,我们可以利用docker让所有的技术变得简单高效!
IDEA 整合Docker
SpringBoot微服务打包Docker镜像
1、构建SpringBoot项目
# 下图是在centos7系统下的IDEA开发环境
1、打开IDEA
[root@localhost ~]# cd /opt/idea-IU_181.5540.23/bin/
[root@localhost bin]# ./idea.sh
# 进入IDEA环境之后,新建project,本实例均采取默认命名
# 建立一个controller package,再写一个HelloController.java小程序
# 编译成功
本地测试一下,浏览器地址栏输入localhost:8080/hello, 成功!
2、打包应用
# 接下来在Maven Projects窗口执行package进行打包,生成jar包
3、编写Dockerfile文件
# 进入File-->Settings-->--Plugins-->docker-->search in repository,安装Docker插件
# 在target文件夹下右键-->File-->新建Dockerfile文件,用于生成docker镜像
4、生成镜像
# 建一个名为idea文件夹,将Dockerfile,demo-0.0.1-SNAPSHOT.jar包文件拷贝过来
[root@localhost ~]# docker build -t bruce_liu .
# 启动容器
[root@localhost ~]# docker run -d -P --name Bruce_liu-springboot-web bruce_liu
5、运行测试、发布
# 在宿主机或者外部电脑浏览器输入http://172.16.12.154:49153/hello,👌
总结:以后我们使用Docker之后,完成项目,交付一个镜像即可!
这是本人学习Docker的一些收获,整理成笔记。希望本人的学习笔记对您有所帮助!如有不正确的地方,欢迎批评指正。
```js
7b2915b456a5d3663df65d878721fcb5659a91ba 172.38.0.16:6379
replicates 3062e9bbc8f3b4af1e9b4be85a5cfe42deb86543
Can I set the above configuration? (type ‘yes’ to accept): yes
Nodes configuration updated
Assign a different config epoch to each node
Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
…
Performing Cluster Check (using node 172.38.0.11:6379)
M: 43362f7068a0318c81705e6b1d4ed9fe8235e3ec 172.38.0.11:6379
slots:[0-5460] (5461 slots) master
1 additional replica(s)
M: ab3fd407c91b53077117f2d4e81a3c52c2082d99 172.38.0.13:6379
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: 46852447ade8944c1b565dad320b974d70fd9b43 172.38.0.15:6379
slots: (0 slots) slave
replicates 43362f7068a0318c81705e6b1d4ed9fe8235e3ec
M: 3062e9bbc8f3b4af1e9b4be85a5cfe42deb86543 172.38.0.12:6379
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
S: b7ad902f534c30879eaeb27afb7b364c114369b4 172.38.0.14:6379
slots: (0 slots) slave
replicates ab3fd407c91b53077117f2d4e81a3c52c2082d99
S: 7b2915b456a5d3663df65d878721fcb5659a91ba 172.38.0.16:6379
slots: (0 slots) slave
replicates 3062e9bbc8f3b4af1e9b4be85a5cfe42deb86543
[OK] All nodes agree about slots configuration.
Check for open slots…
Check slots coverage…
[OK] All 16384 slots covered.
/data #
进入相应的文件夹,打开配置文件reids.conf,效果如下:
[外链图片转存中...(img-qVbynkb0-1641913771944)]
docker 搭建redis集群完成
请注意: master 172.38.0.13 fail , 172.38.0.14 slave 自动变为master
[外链图片转存中...(img-JmyNFu1B-1641913771945)]
总结:因此有了docker容器技术之后,我们可以利用docker让所有的技术变得简单高效!