Docker 是一個(gè)開源項(xiàng)目,誕生于 2013 年初羹膳,最初是 dotCloud 公司內(nèi)部的一個(gè)業(yè)余項(xiàng)目睡互。它基于 Google 公司推出的 Go 語(yǔ)言實(shí)現(xiàn)。 項(xiàng)目后來加入了 Linux 基金會(huì)陵像,遵從了 Apache 2.0 協(xié)議就珠,項(xiàng)目代碼在 GitHub 上進(jìn)行維護(hù)。
Docker 自開源后受到廣泛的關(guān)注和討論醒颖,以至于 dotCloud 公司后來都改名為 Docker Inc妻怎。Redhat 已經(jīng)在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 產(chǎn)品中廣泛應(yīng)用泞歉。
Docker 項(xiàng)目的目標(biāo)是實(shí)現(xiàn)輕量級(jí)的操作系統(tǒng)虛擬化解決方案逼侦。 Docker 的基礎(chǔ)是 Linux 容器(LXC)等技術(shù)。
在 LXC 的基礎(chǔ)上 Docker 進(jìn)行了進(jìn)一步的封裝疏日,讓用戶不需要去關(guān)心容器的管理偿洁,使得操作更為簡(jiǎn)便。用戶操作 Docker 的容器就像操作一個(gè)快速輕量級(jí)的虛擬機(jī)一樣簡(jiǎn)單沟优。
下面的圖片比較了 Docker 和傳統(tǒng)虛擬化方式的不同之處涕滋,可見容器是在操作系統(tǒng)層面上實(shí)現(xiàn)虛擬化,直接復(fù)用本地主機(jī)的操作系統(tǒng)挠阁,而傳統(tǒng)方式則是在硬件層面實(shí)現(xiàn)宾肺。
在任何地方開發(fā)、部署和運(yùn)行任何應(yīng)用
Docker是一款針對(duì)程序開發(fā)人員和系統(tǒng)管理員來開發(fā)侵俗、部署锨用、運(yùn)行應(yīng)用的一款虛擬化平臺(tái)。Docker 可以讓你像使用集裝箱一樣快速的組合成應(yīng)用隘谣,并且可以像運(yùn)輸標(biāo)準(zhǔn)集裝箱一樣增拥,盡可能的屏蔽代碼層面的差異。Docker 會(huì)盡可能的縮短從代碼測(cè)試到產(chǎn)品部署的時(shí)間寻歧。
Docker 組件
- The Docker Engine – Docker Engine 是一個(gè)基于虛擬化技術(shù)的輕量級(jí)并且功能強(qiáng)大的開源容器引擎管理工具掌栅。它可以將不同的 work flow 組合起來構(gòu)建成你的應(yīng)用。
- Docker Hub 可以分享和管理你的images鏡像的一個(gè) Saas 服務(wù)码泛。
為什么選擇Docker
快速交付應(yīng)用程序
- 我們希望你的開發(fā)環(huán)境能夠更好的提高你的工作效率猾封。Docker容器能夠幫助開發(fā)人員、系統(tǒng)管理員噪珊、QA和版本控制工程師在一個(gè)生產(chǎn)環(huán)節(jié)中一起協(xié)同工作晌缘。我們制定了一套容器標(biāo)準(zhǔn)齐莲,而這套容器標(biāo)準(zhǔn)能夠使系統(tǒng)管理員更改容器的時(shí)候,程序員不需要關(guān)心容器的變化磷箕,而更專注自己的應(yīng)用程序代碼选酗。從而隔離開了開發(fā)和管理,簡(jiǎn)化了開發(fā)和部署的成本搀捷。
- 我們使應(yīng)用的構(gòu)建方式更加簡(jiǎn)單星掰,可以快速的迭代你的應(yīng)用多望,并且可以可視化的來查看應(yīng)用的細(xì)微更改嫩舟。這能夠幫助組織里邊的成員來更好的理解一個(gè)應(yīng)用從構(gòu)建到運(yùn)行的過程。
- Docker 是一個(gè)輕量級(jí)的容器怀偷,所以它的速度是非臣已幔快的,而容器的啟動(dòng)時(shí)間只需要一秒鐘椎工,從而大大的減少了開發(fā)饭于、測(cè)試和部署的時(shí)間。輕松部署和擴(kuò)展
- Docker 容器可以運(yùn)行在大多數(shù)的環(huán)境中维蒙,你可以在桌面環(huán)境掰吕、物理主機(jī)、虛擬主機(jī)再到數(shù)據(jù)中颅痊,私有或者公有云中部署殖熟。
- 因?yàn)?Docker 可以從多平臺(tái)下運(yùn)行。你可以很容器的遷移你的應(yīng)用程序斑响。如果需要菱属,你可以非常簡(jiǎn)單的將應(yīng)用程序從測(cè)試環(huán)境遷移到云,或者從云遷移到測(cè)試環(huán)境舰罚。
- Docker 是一個(gè)輕量級(jí)的容器纽门,因此它可以在很短的時(shí)間內(nèi)啟動(dòng)和關(guān)閉。當(dāng)你需要的時(shí)候营罢,你可以啟動(dòng)多個(gè)容器引擎赏陵,并且在不需要使用他們的時(shí)候,可以將他們?nèi)筷P(guān)閉饲漾。
Get higher density and run more workloads
Docker的容器本身不需要額外創(chuàng)建虛擬機(jī)管理系統(tǒng)蝙搔,因此你可以啟動(dòng)多套Docker容器,這樣就可以充分發(fā)揮主機(jī)服務(wù)器的物理資源能颁,也可以降低因?yàn)椴少?gòu)服務(wù)器licenses而帶來的額外成本杂瘸。
快速構(gòu)建 輕松管理
因?yàn)镈ocker上述輕便,快速的特性伙菊“苡瘢可以使您的應(yīng)用達(dá)到快速迭代的目的敌土。每次小的變更,馬上就可以看到效果运翼。而不用將若干個(gè)小變更積攢到一定程度再變更返干。每次變更一小部分其實(shí)是一種非常安全的方式。
Docker的安裝和使用
Docker CE 的安裝請(qǐng)參考官方文檔:
- MacOS:https://docs.docker.com/docker-for-mac/install/
- Windows:https://docs.docker.com/docker-for-windows/install/
- Ubuntu:https://docs.docker.com/install/linux/docker-ce/ubuntu/
- Debian:https://docs.docker.com/install/linux/docker-ce/debian/
- CentOS:https://docs.docker.com/install/linux/docker-ce/centos/
- Fedora:https://docs.docker.com/install/linux/docker-ce/fedora/
- 其他 Linux 發(fā)行版:https://docs.docker.com/install/linux/docker-ce/binaries/
安裝Docker -- Ubantu為例
OS 要求
要安裝Docker CE血淌,您需要這些Ubuntu版本之一的64位版本:
- Cosmic 18.10
- Bionic 18.04 (LTS)
- Xenial 16.04 (LTS)
Docker CE上支持x86_64(或amd64)armhf矩欠,arm64,s390x (IBM Z)悠夯,和ppc64le(IBM的Power)架構(gòu)癌淮。
卸載舊版本
Docker的舊版本被稱為docker,docker.io 或docker-engine沦补。如果已安裝乳蓄,請(qǐng)卸載它們:
$ sudo apt-get remove docker docker-engine docker.io containerd runc
支持的存儲(chǔ)驅(qū)動(dòng)
Docker CE在Ubuntu支持overlay2
,aufs
和btrfs
存儲(chǔ)驅(qū)動(dòng)程序夕膀。
注意:在Docker Engine - Enterprise中虚倒,
btrfs
僅在SLES上受支持。有關(guān)更多詳細(xì)信息产舞,請(qǐng)參閱btrfs上的文檔 魂奥。
對(duì)于Linux內(nèi)核版本4及更高版本的新安裝,overlay2
支持并首選aufs
易猫。Docker CE overlay2
默認(rèn)使用存儲(chǔ)驅(qū)動(dòng)程序耻煤。如果需要使用aufs
,則需要手動(dòng)配置擦囊。見aufs
安裝 Docker CE
您可以根據(jù)需要以不同方式安裝Docker CE:
大多數(shù)用戶 設(shè)置Docker的存儲(chǔ)庫(kù)并從中進(jìn)行安裝违霞,以便于安裝和升級(jí)任務(wù)。這是推薦的方法瞬场。
有些用戶下載DEB軟件包并 手動(dòng)安裝并完全手動(dòng)管理升級(jí)买鸽。這在諸如在沒有訪問互聯(lián)網(wǎng)的氣隙系統(tǒng)上安裝Docker的情況下非常有用。
在測(cè)試和開發(fā)環(huán)境中贯被,一些用戶選擇使用自動(dòng) 便捷腳本來安裝Docker眼五。
使用存儲(chǔ)庫(kù)安裝
在新主機(jī)上首次安裝Docker CE之前,需要設(shè)置Docker存儲(chǔ)庫(kù)彤灶。之后看幼,您可以從存儲(chǔ)庫(kù)安裝和更新Docker。
設(shè)置存儲(chǔ)庫(kù)
-
更新
apt
包索引:$ sudo apt-get update
-
安裝包以允許
apt
通過HTTPS使用存儲(chǔ)庫(kù):$ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common
-
添加Docker的官方GPG密鑰:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
通過搜索指紋的最后8個(gè)字符幌陕,驗(yàn)證您現(xiàn)在擁有帶指紋的密鑰 诵姜。$ sudo apt-key fingerprint 0EBFCD88 pub rsa4096 2017-02-22 [SCEA] 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 uid [ unknown] Docker Release (CE deb) <docker@docker.com> sub rsa4096 2017-02-22 [S]
-
使用以下命令設(shè)置穩(wěn)定存儲(chǔ)庫(kù)。要添加 夜間或測(cè)試存儲(chǔ)庫(kù)搏熄,請(qǐng)?jiān)谙旅娴拿钪械膯卧~后添加單詞
nightly
或test
(或兩者)stable
棚唆。了解夜間和測(cè)試頻道暇赤。注意:下面的
lsb_release -cs
子命令返回Ubuntu發(fā)行版的名稱,例如xenial
宵凌。有時(shí)鞋囊,在像Linux Mint這樣的發(fā)行版中,您可能需要更改$(lsb_release -cs)
為父Ubuntu發(fā)行版瞎惫。例如溜腐,如果您正在使用Linux Mint Tessa
,則可以使用bionic
瓜喇。Docker不對(duì)未經(jīng)測(cè)試和不受支持的Ubuntu發(fā)行版提供任何保證挺益。
x86_64 / amd64 對(duì)應(yīng)的是:
```
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
```
安裝DOCKER CE
-
更新
apt
包索引。$ sudo apt-get update
-
安裝最新版本的Docker CE和containerd欠橘,或者轉(zhuǎn)到下一步安裝特定版本:
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
有多個(gè)Docker存儲(chǔ)庫(kù)矩肩?
如果您啟用了多個(gè)Docker存儲(chǔ)庫(kù)现恼,則在未指定
apt-get install
或apt-get update
命令中的版本的情況下安裝或更新始終會(huì)安裝盡可能高的版本肃续,這可能不適合您的穩(wěn)定性需求。 -
要安裝特定版本的Docker CE叉袍,請(qǐng)?jiān)趓epo中列出可用版本始锚,然后選擇并安裝:
一個(gè)。列出您的倉(cāng)庫(kù)中可用的版本:
$ apt-cache madison docker-ce docker-ce | 5:18.09.1~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages docker-ce | 5:18.09.0~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages docker-ce | 18.06.1~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages docker-ce | 18.06.0~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
例如喳逛,使用第二列中的版本字符串安裝特定版本
5:18.09.1~3-0~ubuntu-xenial
瞧捌。$ sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
-
通過運(yùn)行
hello-world
映像驗(yàn)證是否正確安裝了Docker CE 。$ sudo docker run hello-world
此命令下載測(cè)試映像并在容器中運(yùn)行它润文。當(dāng)容器運(yùn)行時(shí)姐呐,它會(huì)打印一條信息性消息并退出。
Docker CE已安裝并正在運(yùn)行典蝌。該docker
組已創(chuàng)建曙砂,但未向其添加任何用戶。您需要使用它sudo
來運(yùn)行Docker命令骏掀。繼續(xù)Linux postinstall以允許非特權(quán)用戶運(yùn)行Docker命令和其他可選配置步驟鸠澈。
添加daemon.json文件
運(yùn)行 sudo docker run hello-world
,沒有返回結(jié)果截驮,如下:
docker在本地沒有找到hello-world鏡像笑陈,也沒有從docker倉(cāng)庫(kù)中拉取鏡像,出項(xiàng)這個(gè)問題的原因:是應(yīng)為docker服務(wù)器再國(guó)外葵袭,我們?cè)趪?guó)內(nèi)無法正常拉取鏡像涵妥,所以就需要我們?yōu)閐ocker設(shè)置國(guó)內(nèi)阿里云的鏡像加速器;
需要修改配置文件 /etc/docker/daemon.json 如下:
{
"registry-mirrors": ["https://alzgoonw.mirror.aliyuncs.com"]
}
先創(chuàng)建 daemon.json
后添加字段
重啟docker systemctl restart docker
查看docker 狀態(tài) systemctl restart docker
運(yùn)行 sudo docker run hello-world
坡锡,結(jié)果如下:
升級(jí)DOCKER CE
要升級(jí)Docker CE蓬网,請(qǐng)先運(yùn)行sudo apt-get update
块请,然后按照 安裝說明選擇要安裝的新版本。
從包安裝
如果您無法使用Docker的存儲(chǔ)庫(kù)來安裝Docker CE拳缠,則可以下載.deb
適用于您的發(fā)行版的 文件并手動(dòng)安裝墩新。每次要升級(jí)Docker時(shí)都需要下載新文件。
- 去
https://download.docker.com/linux/ubuntu/dists/
選擇你的Ubuntu版本窟坐,瀏覽pool/stable/
海渊,選擇amd64
,armhf
哲鸳,arm64
臣疑,ppc64el
,或s390x
徙菠,并下載.deb
文件要安裝多克爾CE版本讯沈。
Note: To install a nightly package, change the word
stable
in the URL tonightly
. Learn about nightly and testchannels.
-
安裝Docker CE,將下面的路徑更改為您下載Docker軟件包的路徑婿奔。
$ sudo dpkg -i /path/to/package.deb
Docker守護(hù)程序自動(dòng)啟動(dòng)缺狠。
-
通過運(yùn)行
hello-world
映像驗(yàn)證是否正確安裝了Docker CE 。$ sudo docker run hello-world
此命令下載測(cè)試映像并在容器中運(yùn)行它萍摊。當(dāng)容器運(yùn)行時(shí)挤茄,它會(huì)打印一條信息性消息并退出。
Docker CE已安裝并正在運(yùn)行冰木。該docker
組已創(chuàng)建穷劈,但未向其添加任何用戶。您需要使用它sudo
來運(yùn)行Docker命令踊沸。繼續(xù)執(zhí)行Linux的安裝后步驟歇终, 以允許非特權(quán)用戶運(yùn)行Docker命令和其他可選配置步驟。
升級(jí)DOCKER CE
要升級(jí)Docker CE逼龟,請(qǐng)下載較新的軟件包文件并重復(fù) 安裝過程评凝,指向新文件。
使用便捷腳本安裝
Docker在get.docker.com 和test.docker.com上提供了便捷腳本审轮,用于快速肥哎,非交互地將Docker CE的邊緣和測(cè)試版本安裝到開發(fā)環(huán)境中。腳本的源代碼位于 docker-install
存儲(chǔ)庫(kù)中疾渣。 建議不要在生產(chǎn)環(huán)境中使用這些腳本篡诽,在使用它們之前,您應(yīng)該了解潛在的風(fēng)險(xiǎn):
- 腳本需要
root
或sudo
特權(quán)才能運(yùn)行榴捡。因此杈女,在運(yùn)行腳本之前,應(yīng)仔細(xì)檢查和審核腳本。 - 這些腳本會(huì)嘗試檢測(cè)您的Linux發(fā)行版和版本达椰,并為您配置包管理系統(tǒng)翰蠢。此外,腳本不允許您自定義任何安裝參數(shù)啰劲。從Docker的角度或您自己組織的指導(dǎo)方針和標(biāo)準(zhǔn)來看梁沧,這可能會(huì)導(dǎo)致配置不受支持。
- 腳本安裝包管理器的所有依賴項(xiàng)和建議蝇裤,而不要求確認(rèn)廷支。這可能會(huì)安裝大量軟件包,具體取決于主機(jī)的當(dāng)前配置栓辜。
- 該腳本不提供選項(xiàng)來指定要安裝的Docker版本恋拍,并安裝在“邊緣”通道中發(fā)布的最新版本。
- 如果已使用其他機(jī)制在主機(jī)上安裝了Docker藕甩,請(qǐng)不要使用便捷腳本施敢。
此示例使用get.docker.com上的腳本在Linux上安裝最新版本的Docker CE。要安裝最新的測(cè)試版本狭莱,請(qǐng)改用test.docker.com僵娃。在下面的每個(gè)命令中,替換每次出現(xiàn)的get
with test
贩毕。
警告:
始終檢查從Internet下載的腳本悯许,然后在本地運(yùn)行它們。
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
如果您想將Docker用作非root用戶辉阶,您現(xiàn)在應(yīng)該考慮將您的用戶添加到“docker”組,例如:
sudo usermod -aG docker your-user
請(qǐng)記得注銷并重新登錄才能生效瘩扼!
警告:
將用戶添加到“docker”組會(huì)授予他們運(yùn)行容器的能力谆甜,這些容器可用于獲取Docker主機(jī)上的root權(quán)限。 有關(guān)更多信息集绰,請(qǐng)參閱 Docker守護(hù)程序攻擊面规辱。
已安裝Docker CE。它會(huì)自動(dòng)在DEB
基于發(fā)行版的分發(fā)上啟動(dòng)栽燕。在RPM
基于On的 基礎(chǔ)上罕袋,您需要使用相應(yīng)的systemctl
或service
命令手動(dòng)啟動(dòng)它 。如消息所示碍岔,非root用戶默認(rèn)情況下無法運(yùn)行Docker命令浴讯。
使用便捷腳本后升級(jí)DOCKER
如果您使用便捷腳本安裝了Docker,則應(yīng)直接使用軟件包管理器升級(jí)Docker蔼啦。重新運(yùn)行便捷腳本沒有任何好處榆纽,如果它嘗試重新添加已添加到主機(jī)的存儲(chǔ)庫(kù),則可能會(huì)導(dǎo)致問題。
卸載Docker CE
-
卸載Docker CE軟件包:
$ sudo apt-get purge docker-ce
-
主機(jī)上的圖像奈籽,容器饥侵,卷或自定義配置文件不會(huì)自動(dòng)刪除。要?jiǎng)h除所有圖像衣屏,容器和卷:
$ sudo rm -rf /var/lib/docker
您必須手動(dòng)刪除任何已編輯的配置文件躏升。
·