公司中的全部鏡像都是要上傳到harbor倉庫上,一層一層的打鏡像,在打的同時將鏡像上傳到harbor上php
這個目錄結構必定要提早設計好,我先將官方的原始系統鏡像pull下來,在這層的基礎之上咱們會加一些經常使用命令前端
不然後期還要在鏡像中安裝命令太過於麻煩,咱們將這個安裝經常使用命令的鏡像稱爲公司的基礎鏡像叫作baseimgae,後期咱們在打鏡像的時候就再也不調用官方的了,而是直接調用baseimgae。咱們會在baseimgae這個鏡像中不只要安裝命令,並且還要將咱們的經常使用用戶建立好,這個鏡像建立好了以後再往下就會分叉了,java
由於公司有不少業務,這一層就包括了各類服務鏡像如jdk(java環境使用的鏡像)、安裝PHP的鏡像、安裝NGINX的鏡像等等服務。而後這一層再提交爲一層業務鏡像,並在JDK的鏡像層往下再打一層tomcat的業務層,在tomcet這層以後再打一層代碼層。用來存放代碼的APP一、APP2這一層只是編譯安裝了各個服務而已他們上面是沒有任何代碼和web頁面數據的。node
而後再將這一層打出來的鏡像就能夠往公司的 Harbor 倉庫進行上傳了。mysql
宿主機:nginx
打完了這幾層鏡像以後,下面就是運行這些鏡像的各個node節點也就是所謂的宿主機,要保證咱們的宿主機可以在公司的harbor上去拉取鏡像,當宿主機拉取完了鏡像以後,咱們就讓該宿主機運行一個容器。而後再將全部nginx容器的數據都存放到NAS存儲上,以實現數據同步。而NAS存儲是先掛載在宿主機上,而後是宿主機將這個存儲給各個容器去使用。由java容器往NAS存儲上寫數據,再由nginx容器來讀NAS存儲上的數據,因此他們其實是看到的同一份數據web
總結:sql
咱們從鏡像分層上,咱們不會像docker官方那樣一步打成咱們的業務鏡像,由於像官方那樣一次性操做的步驟太多了,不利於後期dockerfile文件以及沒作一個容器就要重新打一次鏡像,不能實現dockerfile文件屢次複用。docker
因此咱們會將每一個步驟才分開,每一個步驟都是一層鏡像,這樣後期某個業務想用某個環境的鏡像直接就基於不一樣層的dockerfile文件進行調用。centos
更多文章和資料|點擊下方文字直達 ↓↓↓
阿里雲K8s實戰手冊
[阿里雲CDN排坑指南]CDN
ECS運維指南
DevOps實踐手冊
Hadoop大數據實戰手冊
Knative雲原生應用開發指南
OSS 運維實戰手冊