一個只讀層被稱爲鏡像,一個鏡像是永久不會變的。python
因爲 Docker 使用一個統一文件系統,Docker 進程認爲整個文件系統是以讀寫方式掛載的。 可是全部的變動都發生頂層的可寫層,而下層的原始的只讀鏡像文件並未變化。因爲鏡像不可寫,因此鏡像是無狀態的。nginx
每個鏡像均可能依賴於由一個或多個下層的組成的另外一個鏡像。咱們有時說,下層那個 鏡像是上層鏡像的父鏡像。git
爲何要說這個呢?由於是容器使用鏡像,因此他們之間有密切的關係。github
容器實際上是在鏡像的最上面加了一層讀寫層,在運行容器裏文件改動時,會先從鏡像裏面要寫的文件複製到容器本身的文件系統中(讀寫層)。web
若是容器刪除了,最上面的讀寫層也就刪除了,改動也就丟失了。因此不管多少個容器共享一個鏡像,所作的寫操做都是從鏡像的文件系統中複製過來操做的,並不會修改鏡像的源文件,這種方式提升磁盤利用率。docker
若想持久化這些改動,能夠經過docker commit將容器保存成一個新的鏡像,可是不推薦這麼操做,而是直接從新制做一個鏡像,做爲模板,這樣的鏡像會更小。centos
一個沒有任何父鏡像的鏡像,謂之基礎鏡像,好比centos、Ubuntu等基礎鏡像,只是提供操做系統,沒有任何應用。api
全部鏡像都是經過一個 64 位十六進制字符串 (內部是一個 256 bit 的值)來標識的。 爲簡化使用,前 12 個字符能夠組成一個短ID,能夠在命令行中使用。短ID仍是有必定的 碰撞機率,因此服務器老是返回長ID。安全
docker pull
命令直接從倉庫獲取所須要的鏡像。鏡像拉取到本地後,就能夠構建容器了。服務器
Harbor是一個用於存儲和分發Docker鏡像的企業級Registry服務器,經過添加一些企業必需的功能特性,例如安全、標識和管理等,擴展了開源Docker Distribution。做爲一個企業級私有Registry服務器,Harbor提供了更好的性能和安全。提高用戶使用Registry構建和運行環境傳輸鏡像的效率。Harbor支持安裝在多個Registry節點的鏡像資源複製,鏡像所有保存在私有Registry中, 確保數據和知識產權在公司內部網絡中管控。另外,Harbor也提供了高級的安全特性,諸如用戶管理,訪問控制和活動審計等。參考文檔:https://goharbor.io/docs/
參考文檔:https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md
Harbor安裝分爲在線安裝和離線安裝。在線安裝就是從harbor倉庫去拉取鏡像,離線安裝是把鏡像下載到本地後安裝。因爲harbor倉庫在國外,因此建議經過離線安裝。
安裝需求:
安裝步驟
wget https://storage.googleapis.com/harbor-releases/release-1.6.0/harbor-offline-installer-v1.6.2.tgz
harbor.cfg
./prepare
./install.sh
參考連接:https://github.com/goharbor/harbor/blob/master/docs/user_guide.md
不得不說,harbor官網很是全面,也很是詳細。
、
建立項目,設置爲私有(不勾選"公開")
給用戶受權(賦予項目操做權限)
給項目添加受權的成員
docker tag nginx 10.11.97.187/library/nginx:v2
harbor設置了項目以及用戶,切設置了用戶控制項目的權限,因此對於鏡像的使用必需要通過用戶驗證後才能使用。否則會提示錯誤信息:
用戶qianxun登錄,qianxun擁有管理jxqy項目的權限:
用戶登錄後的密碼保存以及提示登錄成功。
咱們再次推送鏡像:
查看推送結果:
再次測試權限問題,登錄一個帳戶,對jxqy項目沒有管理權限:
咱們以xuequn用戶推送鏡像:
從上能夠看出,xuequn用戶對jxqy項目沒有控制權限,沒法獲取其資源。
咱們有了倉庫,就能夠直接使用鏡像開啓容器,而不須要把鏡像下載下來。
訪問web