持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第25天,点击查看活动详情
1.写在前面
鉴于目前,云原生
k8s的部署方式,越来越广泛。
很多项目,尤其是微服务的想,容器化部署,更使得我们的部署,变得更快捷。
当我们需要集群部署的时候,很多我们只需要,用相同的一个镜像,运行多几遍,就完事的事了!!!
虽然说容器化部署,更方便了运维人员部署,门槛可能也降低了不少。
但是呢,很多时候,我们在部署生产环境的时候,大部分人,都需要使用vpn,才能ssh上生产环境的服务器。
那远程连接的网络,就变得会很吃紧。这就导致了下面的这个问题:
docker镜像,虽说是一个包含很小的linux运行环境,但是我们的服务要打成一个docker镜像。
那至少要包含这些东西:可运行的linux环境 + jdk环境 + springboot jar包
这3样加起来,就使得我们要上传到正式环境的docker包,远远大于传统方式只需上传的springboot jar包
以上这个问题,应该都会困惑比较多的人,毕竟正式环境的服务器,远程传输文件的网络,一般来说都比较慢。
很多时候,需要更新一个服务,可能要上传的docker镜像包,就差不多是600MB - 1G这样。
运维人员的耐心,可能都要被磨没了!!!T_T
哈哈,一般的做法,就是对docker镜像包,进行瘦身喽,尽量减少docker镜像包的大小喽。
那我们今天就来讲讲一般的做法:
1.使用官方提供的镜像(官方已经经过瘦身,大小应该可以接收)
2.选用体积更小的linux镜像,例如:alpine(可能会有坑,大家伙可以去踩一下)
3.可以尝试挂载宿主机的服务,例如:linux环境 + jdk环境 + springboot jar包,这其中的jdk环境可以不要,直接使用挂载的方式,使用宿主机的jdk环境。
4.更多......
那我们今天就来讲讲第1种方式,制作属于自己的Docker镜像包(nginx,mysql,redis等)。
开干!!!
2.制作nginx,mysql,redis等镜像包
2.1.redis打包
2.1.1环境准备
- /opt/llsydn/dockerfile/redis
从docker hub中pull拉取redis镜像,这里以6.2.7版本为例
docker pull redis:6.2.7
复制代码
官方提供的镜像,就很小了:地址
docker pull redis:6.2.7
由于公司192.168.4.xxx上不了网,所以可以找一台能上网的服务器,pull拉取redis的镜像。然后再保存下来,再上传到xxx
docker save -o redis.tar redis:latest
再到xxx进行load加载到当前docker本地中
docker load -i redis.tar
注意:redis.conf文件
1.daemonize no 这个配置不能设置为yes否则启动失败(重要)
2.bind 0.0.0.0
3.dir /data
4.requirepass llsydn123 密码
5.port 6379
复制代码
这个redis.conf可以先直接启动刚拉取的redis镜像,然后进入到容器,再将/etc/redis/redis.conf,复制出来。
2.1.2Dockerfile
FROM redis:6.2.7
COPY redis.conf /etc/redis/redis.conf
CMD [ "redis-server", "/etc/redis/redis.conf" ]
复制代码
2.1.3打包发布
- vi build.sh
docker build -t llsydn/redis:6.2.7 -f ./Dockerfile .
docker push llsydn/redis:6.2.7
docker rmi llsydn/redis:6.2.7
复制代码
2.1.4效果
账号密码:admin、llsydn123
harbor的安装可查看这里:点击查看
2.2.nginx打包
2.2.1环境准备
- /opt/llsydn/dockerfile/nginx
从docker hub中pull拉取nginx镜像,这里以1.21.4版本为例
docker pull nginx:1.21.4
复制代码
官方提供的镜像,就很小了:地址
docker pull nginx:1.21.4
由于公司192.168.4.xxx上不了网,所以可以找一台能上网的服务器,pull拉取nginx的镜像。然后再保存下来,再上传到xxx
docker save -o nginx.tar nginx
再到178进行load加载到当前docker本地中
docker load -i nginx.tar
2.2.2Dockerfile
不用写Dockerfile了,直接将nginx镜像,用tag打标签,变成我们的镜像即可。
2.2.3打包发布
- vi build.sh
docker tag [ImageId] llsydn/nginx:1.21.4
docker push llsydn/nginx:1.21.4
docker rmi llsydn/nginx:1.21.4
复制代码
注意:[ImageId] 这个为nginx,镜像的id
使用docker images查看一下即可
2.2.4效果
账号密码:admin、llsydn123
harbor的安装可查看这里:点击查看
2.3.mysql打包
2.3.1环境准备
- /opt/llsydn/dockerfile/mysql
从docker hub中pull拉取mysql的镜像,这里以5.7.36版本为例
docker pull mysql:5.7.36
复制代码
官方提供的镜像,就很小了:地址
docker pull mysql:5.7.36
由于公司192.168.4.xxx上不了网,所以可以找一台能上网的服务器,pull拉取mysql的镜像。然后再保存下来,再上传到xxx
docker save -o mysql.tar mysql:5.7.36
再到178进行load加载到当前docker本地中
docker load -i mysql.tar 效果如下:
2.3.2Dockerfile
不用写Dockerfile了,直接将mysql镜像,用tag打标签,变成我们的镜像即可。
2.3.3打包发布
- vi build.sh
docker tag [ImageId] llsydn/mysql:5.7.36
docker push llsydn/mysql:5.7.36
docker rmi llsydn/mysql:5.7.36
复制代码
注意:[ImageId] 这个为mysql,镜像的id
使用docker images查看一下即可,例如这里为:938b57d64674
2.3.4效果
账号密码:admin、llsydn123
好了,以上就是我个人的实操了。
个人理解,可能也不够全面,班门弄斧了。
好了,今天就先到这里了!!!^_^
如果觉得有收获的,帮忙点赞、评论、收藏
一下呗!!!