目录
一、使用Docker部署的好处 二、Docker 与 Kubernetes 对比 三、Redis集群部署实战 四、Spring Boot项目 打包镜像 ?小结
一、使用Docker部署的好处
Docker的好处在于:在不同实例上运行相同的容器
Docker的五大优点: 持续部署与测试
、多云服务平台支持
、环境标准化和版本控制
、隔离
、安全
二、Docker 与 Kubernetes 对比
Docker适用于较为小的应用,并发量不大的情况下、微服务为超过10个 ,建议适用Docker部署,这样也省资源、可减少开发成本。
K8S适用于大集群的情况,高并发,并且微服务超过了10个 ,同时性能也是非常好的,性能好的前提下,开发成本也增加了不少 !
三、Redis集群部署实战
下面部署如图所示三主三从的Redis集群
停掉所有的容器,删除全部记录
?
1
docker
rm
$(docker
ps
-a -q)
创建自定义网络redis
?
1
docker network create redis --subnet 172.38.0.0
/16
通过脚本创建六个redis的基本信息
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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
done
启动6个redis容器,并进行数据挂载
?
1
2
3
4
5
6
7
8
# 通过脚本一次性启动
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
进入redis-1中设置创建集群
?
1
2
3
4
5
# 进入redis-1
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
进入容器
?
1
2
3
4
redis-cli -c
# 查看详细信息
CLUSTER INFO
查看nodes
?
设置值
?
我们可以看到,将值设置在了 13节点上,我们把该节点停止,再次获取值查看
?
1
2
# 新开窗口停止redis-3容器
docker stop redis -3
在原来窗口获取k1
?
可以看到,值已经同步到了其它节点,主节点挂掉后,我们照样可以拿到值!
四、Spring Boot项目 打包镜像
创建一个SpringBoot项目
TestController
?
1
2
3
4
5
6
7
8
@RestController
public
class
TestController {
@GetMapping
(
"/hello"
)
public
String hello() {
return
"Hello World!!!"
;
}
}
本地测试成功访问,然后编译项目为jar包
?
1
2
//
进入项目目录
mvn clean package
下载Docker镜像
编写Dockerfile
?
1
2
3
4
5
FROM java:8
COPY *.jar
/app
.jar
CMD [
"--server.port=8080"
]
EXPOSE 8080
ENTRYPOINT [
"java"
,
"-jar"
,
"/app.jar"
]
将jar包和Dockerfile上传至服务器
服务器文件
编译Dockerfile
?
1
docker build -t xiaowang .
测试访问
?
成功上传镜像!
?小结
以上就是【Bug 终结者 】对 Docker实战 – 部署Redis集群与部署微服务项目 的简单介绍,使用Docker部署我们的应用很方便,快捷 ,但是架构庞大的话,就不建议使用Docker了,可以采用我们的k8s集群部署,是当下最流行的技术!