利用別人的映象製作屬於自己的Docker映象包(nginx,mysql,redis等)
theme: cyanosis
持續創作,加速成長!這是我參與「掘金日新計劃 · 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
好了,以上就是我個人的實操了。
個人理解,可能也不夠全面,班門弄斧了。
好了,今天就先到這裡了!!!^_^
如果覺得有收穫的,幫忙點贊、評論、收藏
一下唄!!!
- JVM調優-常見的調優工具
- JVM調優-JVM調優實踐一
- nacos許可權繞過漏洞
- JVM調優-常見的垃圾回收器
- JVM調優-GC基本原理和調優關鍵分析
- 非一線城市,畢業快5年,沒車沒孩程式設計師 | 2022年中總結
- 使用jmeter壓測,生成dump記憶體快照,並用jvisualvm分析
- Skywalking分散式鏈路追蹤,無法記錄日誌分析(gateway閘道器)
- nacos的一些api和監聽器用法
- 一次線上ngix的504 gateway timeout排查(真實案例)
- rtsp通過ffmpeg nginx釋出成rtmp和http-flv部署文件
- http伺服器負載均衡安裝部署(apache keepalived)(一)
- 網路穿透,實現本地開發環境測試微信公眾號(2)
- 利用別人的映象製作屬於自己的Docker映象包(nginx,mysql,redis等)
- 處理專案掃描出來的一些常見漏洞bug(java相關)
- Docker打包製作openoffice映象(Dockerfile方式),並處理中文亂碼
- Docker打包製作rocketmq映象(Dockerfile方式),並執行啟動
- 安裝harbor作為docker映象倉庫
- Docker打包製作seata映象(Dockerfile方式),並執行啟動
- Docker映象jdk製作打包(各tag版本說明)