大多數(shù)的Python程序員使用的都是virtualenv,但當(dāng)項(xiàng)目要求你快速上線或者部署多臺服務(wù)器環(huán)境的時候就需要將服務(wù)器一臺一臺的yum install、vim、restart…而docker就可以幫助你快速的粘貼過去。
我的云服務(wù)器是Linux centOS(版本大于等于7.0)
1.刪除可能存在的舊版本
停止Docker服務(wù)器:systemctl stop docker
查看當(dāng)前版本:rpm -qa |grep docker
卸載軟件包:
sudo yum remove docker docker-client docker-client-latest docker-common docker-
latest docker-latest-logrotate docker-logrotate docker-engine
刪除相關(guān)配置文件
2. 新版本安裝
軟件包安裝:yum install -y yum-utils device-mapper-persistent-data lvm2
添加Docker源:yum-config-manager \ --add-repo \ https://download.docker.com/lin
查看可安裝的版本:yum list docker-ce --showduplicates |sort -r
安裝最新版本:
yum makecache fast
yum install docker-ce -y
啟動并開機(jī)自啟:
systemctl start docker
systemctl enable docker
查看版本:docker version
二、基本概念
鏡像
操作系統(tǒng)分為內(nèi)核和用戶空間。對于Linux而言,內(nèi)核啟動后,會掛載root文件系統(tǒng)為其提供用戶空間支持。而Docker鏡像(Image),就相當(dāng)于是一個root文件系統(tǒng)。
Docker鏡像是一個特殊的文件系統(tǒng),除了提供容器運(yùn)行時所需的程序、庫、資源、配置等文件外,還包含了一些為運(yùn)行時準(zhǔn)備的一些配置參數(shù)(如匿名卷、環(huán)境變量、用戶等)。 鏡像不包含任何動態(tài)數(shù)據(jù),其內(nèi)容在構(gòu)建之后也不會被改變。
分層存儲 鏡像只是一個虛擬的概念,其實(shí)際體現(xiàn)并非由一個文件組成,而是由一組文件系統(tǒng)組成,或者說,由多層文件系統(tǒng)聯(lián)合組成。
Docker設(shè)計時,就充分利用Union FS的技術(shù),將其設(shè)計為分層存儲的架構(gòu)。 鏡像實(shí)際是由多層文件系統(tǒng)聯(lián)合組成。
Union FS
聯(lián)合文件系統(tǒng)是(Union FS)是linux的存儲技術(shù),也是Docker鏡像的存儲方式。 它是分層的文件系統(tǒng),將不同目錄拉到同一個虛擬目錄下。下圖展示了Docker用Union FS 搭建的分層鏡像:(比如最下層是操作系統(tǒng)的引導(dǎo),上一層是Linux操作系統(tǒng),再上一層是Tomcat,jdk,再上一層是應(yīng)用代碼)這些層是只讀的,加載完后這些文件會被看成是同一個目錄,相當(dāng)于只有一個文件系統(tǒng)。
鏡像構(gòu)建時,會一層層構(gòu)建,前一層是后一層的基礎(chǔ)。每一層構(gòu)建完就不會再發(fā)生改變,后一層上的任何改變只發(fā)生在自己這一層。比如,刪除前一層文件的操作,實(shí)際不是真的刪除前一層的文件,而是僅在當(dāng)前層標(biāo)記為該文件已刪除。在最終容器運(yùn)行的時候,雖然不會看到這個文件,但是實(shí)際上該文件會一直跟隨鏡像。因此,在構(gòu)建鏡像的時候,需要額外小心,每一層盡量只包含該層需要添加的東西,任何額外的東西應(yīng)該在該層構(gòu)建結(jié)束前清理掉。
容器(Container)——鏡像運(yùn)行時的實(shí)體
鏡像(Image)和容器(Container)的關(guān)系,就像是面向?qū)ο蟪绦蛟O(shè)計中的類和實(shí)例一樣,鏡像是靜態(tài)的定義,容器是鏡像運(yùn)行時的實(shí)體。容器可以被創(chuàng)建、啟動、停止、刪除、暫停等 。
容器的實(shí)質(zhì)是進(jìn)程,但與直接在宿主執(zhí)行的進(jìn)程不同,容器進(jìn)程運(yùn)行于屬于自己的獨(dú)立的命名空間。前面講過鏡像使用的是分層存儲,容器也是如此。
容器存儲層的生存周期和容器一樣,容器消亡時,容器存儲層也隨之消亡。因此,任何保存于容器存儲層的信息都會隨容器刪除而丟失。
倉庫(Repository)——集中存放鏡像文件的地方
鏡像構(gòu)建完成后,可以很容易的在當(dāng)前宿主上運(yùn)行,但是, 如果需要在其它服務(wù)器上使用這個鏡像,我們就需要一個集中的存儲、分發(fā)鏡像的服務(wù),Docker Registry就是這樣的服務(wù)。
一個Docker Registry中可以包含多個倉庫(Repository);每個倉庫可以包含多個標(biāo)簽(Tag);每個標(biāo)簽對應(yīng)一個鏡像。所以說:鏡像倉庫是Docker用來集中存放鏡像文件的地方類似于我們之前常用的代碼倉庫。
通常,一個倉庫會包含同一個軟件不同版本的鏡像,而標(biāo)簽就常用于對應(yīng)該軟件的各個版本 。我們可以通過<倉庫名>:<標(biāo)簽>的格式來指定具體是這個軟件哪個版本的鏡像。如果不給出標(biāo)簽,將以latest作為默認(rèn)標(biāo)簽。(以 Ubuntu 鏡像為例,ubuntu是倉庫的名字,其內(nèi)包含有不同的版本標(biāo)簽,如,14.04,16.04。我們可以通過ubuntu:14.04,或者ubuntu:16.04來具體指定所需哪個版本的鏡像。如果忽略了標(biāo)簽,比如ubuntu,那將視為ubuntu:latest。)
Docker Registry公開服務(wù)和私有Docker Registry的概念:
Docker Registry公開服務(wù)是開放給用戶使用、允許用戶管理鏡像的Registry服務(wù)。一般這類公開服務(wù)允許用戶免費(fèi)上傳、下載公開的鏡像,并可能提供收費(fèi)服務(wù)供用戶管理私有鏡像。
最后如果你對Python培訓(xùn)課程感興趣的話,不妨來千鋒Python培訓(xùn)班了解一下我們的Python培訓(xùn)課程,更有免費(fèi)的Python學(xué)習(xí)資料可以領(lǐng)取,趕緊來咨詢一下吧。