二、Docker鏡像和鏡像管理

1、鏡像介紹

一、定義

一個只讀層被稱爲鏡像,一個鏡像是永久不會變的。python

因爲 Docker 使用一個統一文件系統,Docker 進程認爲整個文件系統是以讀寫方式掛載的。 可是全部的變動都發生頂層的可寫層,而下層的原始的只讀鏡像文件並未變化。因爲鏡像不可寫,因此鏡像是無狀態的。nginx

 

每個鏡像均可能依賴於由一個或多個下層的組成的另外一個鏡像。咱們有時說,下層那個 鏡像是上層鏡像的父鏡像。git

二、鏡像和容器的關係

爲何要說這個呢?由於是容器使用鏡像,因此他們之間有密切的關係。github

容器實際上是在鏡像的最上面加了一層讀寫層,在運行容器裏文件改動時,會先從鏡像裏面要寫的文件複製到容器本身的文件系統中(讀寫層)。web

若是容器刪除了,最上面的讀寫層也就刪除了,改動也就丟失了。因此不管多少個容器共享一個鏡像,所作的寫操做都是從鏡像的文件系統中複製過來操做的,並不會修改鏡像的源文件,這種方式提升磁盤利用率。docker

若想持久化這些改動,能夠經過docker commit將容器保存成一個新的鏡像,可是不推薦這麼操做,而是直接從新制做一個鏡像,做爲模板,這樣的鏡像會更小。centos

三、基礎鏡像

一個沒有任何父鏡像的鏡像,謂之基礎鏡像,好比centos、Ubuntu等基礎鏡像,只是提供操做系統,沒有任何應用。api

四、鏡像ID

全部鏡像都是經過一個 64 位十六進制字符串 (內部是一個 256 bit 的值)來標識的。 爲簡化使用,前 12 個字符能夠組成一個短ID,能夠在命令行中使用。短ID仍是有必定的 碰撞機率,因此服務器老是返回長ID。安全

 

五、獲取鏡像

  • 可使用 docker pull 命令直接從倉庫獲取所須要的鏡像。
  • 也可使用docker search container_name來搜索鏡像。

鏡像拉取到本地後,就能夠構建容器了。服務器

 

2、鏡像管理(命令行)

一、鏡像操做

  • docker images # 顯示本地全部的鏡像列表,等價於docker image ls
  • docker prune  #刪除沒有使用的全部image
  • docker import # 從一個tar包建立一個鏡像,每每和export結合使用
  • docker export #導出一個tar包格式的鏡像
  • docker build # 使用Dockerfile建立鏡像(推薦)
  • docker commit # 從容器建立鏡像,通常不多使用,由於鏡像是不可變的模板
  • docker rmi # 刪除一個鏡像
  • docker load # 從一個tar包建立一個鏡像,和save配合使用
  • docker save # 將一個鏡像保存爲一個tar包,帶layers和tag信息
  • docker history # 顯示生成一個鏡像的歷史命令,Dockerfile裏面的每條命令
  • docker tag # 爲鏡像打一個tag

二、鏡像倉庫(registry)操做

  • docker login # 登陸到一個registry
  • docker search # 從registry倉庫搜索鏡像
  • docker pull # 從倉庫下載鏡像到本地
  • docker push # 將一個鏡像push到registry倉庫中

 

 3、企業級鏡像倉庫Harbor(圖形化)

Harbor是一個用於存儲和分發Docker鏡像的企業級Registry服務器,經過添加一些企業必需的功能特性,例如安全、標識和管理等,擴展了開源Docker Distribution。做爲一個企業級私有Registry服務器,Harbor提供了更好的性能和安全。提高用戶使用Registry構建和運行環境傳輸鏡像的效率。Harbor支持安裝在多個Registry節點的鏡像資源複製,鏡像所有保存在私有Registry中, 確保數據和知識產權在公司內部網絡中管控。另外,Harbor也提供了高級的安全特性,諸如用戶管理,訪問控制和活動審計等。參考文檔:https://goharbor.io/docs/

 

一、Harbor安裝

參考文檔:https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md

Harbor安裝分爲在線安裝和離線安裝。在線安裝就是從harbor倉庫去拉取鏡像,離線安裝是把鏡像下載到本地後安裝。因爲harbor倉庫在國外,因此建議經過離線安裝。

安裝需求:

安裝步驟

  1. Download the installer;
  2. Configure harbor.cfg;
  3. Run install.sh to install and start Harbor;

a、下載安裝包

wget  https://storage.googleapis.com/harbor-releases/release-1.6.0/harbor-offline-installer-v1.6.2.tgz

  

b、修改配置文件

harbor.cfg

 

c、安裝

./prepare
./install.sh

  

d、進入web界面

 

 

e、登錄harbor

 

 

二、Harbor使用

參考連接:https://github.com/goharbor/harbor/blob/master/docs/user_guide.md

不得不說,harbor官網很是全面,也很是詳細。

 

a、建立項目

建立項目,設置爲私有(不勾選"公開")

 

 

 

b、建立用戶

 

 

 給用戶受權(賦予項目操做權限)

 

給項目添加受權的成員

 

 

c、生成鏡像

docker tag nginx 10.11.97.187/library/nginx:v2

  

 

d、上傳鏡像

harbor設置了項目以及用戶,切設置了用戶控制項目的權限,因此對於鏡像的使用必需要通過用戶驗證後才能使用。否則會提示錯誤信息:

用戶qianxun登錄,qianxun擁有管理jxqy項目的權限:

用戶登錄後的密碼保存以及提示登錄成功。

咱們再次推送鏡像:

 

 查看推送結果:

 

再次測試權限問題,登錄一個帳戶,對jxqy項目沒有管理權限:

咱們以xuequn用戶推送鏡像:

從上能夠看出,xuequn用戶對jxqy項目沒有控制權限,沒法獲取其資源。

e、使用鏡像

 咱們有了倉庫,就能夠直接使用鏡像開啓容器,而不須要把鏡像下載下來。

訪問web

 

f、審計日誌

相關文章
相關標籤/搜索