Docker框架的使用系列教程(二)

千鋒武漢發表於2021-04-16

      大多數的Python程式設計師使用的都是virtualenv,但當專案要求你快速上線或者部署多臺伺服器環境的時候就需要將伺服器一臺一臺的yum install、vim、restart…而docker就可以幫助你快速的貼上過去。

      我的雲伺服器是Linux centOS(版本大於等於7.0)

      1.刪除可能存在的舊版本

      停止Docker伺服器:systemctl stop docker

      檢視當前版本:rpm -qa |grep docker

      解除安裝軟體包:

      sudo yum remove docker docker-client docker-client-latest docker-common docker-

      latest docker-latest-logrotate docker-logrotate docker-engine

      刪除相關配置檔案

1

      2. 新版本安裝

      軟體包安裝:yum install -y yum-utils device-mapper-persistent-data lvm2

      新增Docker源:yum-config-manager \ --add-repo \

      檢視可安裝的版本:yum list docker-ce --showduplicates |sort -r

      安裝最新版本:

      yum makecache fast

      yum install docker-ce -y

      啟動並開機自啟:

      systemctl start docker

      systemctl enable docker

      檢視版本:docker version

      二、基本概念

2

      映象

      作業系統分為核心和使用者空間。對於Linux而言,核心啟動後,會掛載root檔案系統為其提供使用者空間支援。而Docker映象(Image),就相當於是一個root檔案系統。

      Docker映象是一個特殊的檔案系統,除了提供容器執行時所需的程式、庫、資源、配置等檔案外,還包含了一些為執行時準備的一些配置引數(如匿名卷、環境變數、使用者等)。 映象不包含任何動態資料,其內容在構建之後也不會被改變。

      分層儲存 映象只是一個虛擬的概念,其實際體現並非由一個檔案組成,而是由一組檔案系統組成,或者說,由多層檔案系統聯合組成。

      Docker設計時,就充分利用Union FS的技術,將其設計為分層儲存的架構。 映象實際是由多層檔案系統聯合組成。

3

      Union FS

      聯合檔案系統是(Union FS)是linux的儲存技術,也是Docker映象的儲存方式。 它是分層的檔案系統,將不同目錄拉到同一個虛擬目錄下。下圖展示了Docker用Union FS 搭建的分層映象:(比如最下層是作業系統的引導,上一層是Linux作業系統,再上一層是Tomcat,jdk,再上一層是應用程式碼)這些層是隻讀的,載入完後這些檔案會被看成是同一個目錄,相當於只有一個檔案系統。

      映象構建時,會一層層構建,前一層是後一層的基礎。每一層構建完就不會再發生改變,後一層上的任何改變只發生在自己這一層。比如,刪除前一層檔案的操作,實際不是真的刪除前一層的檔案,而是僅在當前層標記為該檔案已刪除。在最終容器執行的時候,雖然不會看到這個檔案,但是實際上該檔案會一直跟隨映象。因此,在構建映象的時候,需要額外小心,每一層儘量只包含該層需要新增的東西,任何額外的東西應該在該層構建結束前清理掉。

      容器(Container)——映象執行時的實體

      映象(Image)和容器(Container)的關係,就像是物件導向程式設計中的類和例項一樣,映象是靜態的定義,容器是映象執行時的實體。容器可以被建立、啟動、停止、刪除、暫停等 。

      容器的實質是程式,但與直接在宿主執行的程式不同,容器程式執行於屬於自己的獨立的名稱空間。前面講過映象使用的是分層儲存,容器也是如此。

      容器儲存層的生存週期和容器一樣,容器消亡時,容器儲存層也隨之消亡。因此,任何儲存於容器儲存層的資訊都會隨容器刪除而丟失。

      倉庫(Repository)——集中存放映象檔案的地方

      映象構建完成後,可以很容易的在當前宿主上執行,但是, 如果需要在其它伺服器上使用這個映象,我們就需要一個集中的儲存、分發映象的服務,Docker Registry就是這樣的服務。

      一個Docker Registry中可以包含多個倉庫(Repository);每個倉庫可以包含多個標籤(Tag);每個標籤對應一個映象。所以說:映象倉庫是Docker用來集中存放映象檔案的地方類似於我們之前常用的程式碼倉庫。

      通常,一個倉庫會包含同一個軟體不同版本的映象,而標籤就常用於對應該軟體的各個版本 。我們可以透過<倉庫名>:<標籤>的格式來指定具體是這個軟體哪個版本的映象。如果不給出標籤,將以latest作為預設標籤。(以 Ubuntu 映象為例,ubuntu是倉庫的名字,其內包含有不同的版本標籤,如,14.04,16.04。我們可以透過ubuntu:14.04,或者ubuntu:16.04來具體指定所需哪個版本的映象。如果忽略了標籤,比如ubuntu,那將視為ubuntu:latest。)

      Docker Registry公開服務和私有Docker Registry的概念:

      Docker Registry公開服務是開放給使用者使用、允許使用者管理映象的Registry服務。一般這類公開服務允許使用者免費上傳、下載公開的映象,並可能提供收費服務供使用者管理私有映象。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2768330/,如需轉載,請註明出處,否則將追究法律責任。

相關文章