Docker 是一個開源項目,誕生于 2013 年初,最初是 dotCloud 公司內部的一個業余項目。它基于 Google 公司推出的 Go 語言實現。 項目后來加入了 Linux 基金會,遵從了 Apache 2.0 協議,項目代碼在 GitHub 上進行維護。
Docker 自開源后受到廣泛的關注和討論,以至于 dotCloud 公司后來都改名為 Docker Inc。Redhat 已經在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 產品中廣泛應用。
Docker 項目的目標是實現輕量級的操作系統虛擬化解決方案。 Docker 的基礎是 Linux 容器(LXC)等技術。
在 LXC 的基礎上 Docker 進行了進一步的封裝,讓用戶不需要去關心容器的管理,使得操作更為簡便。用戶操作 Docker 的容器就像操作一個快速輕量級的虛擬機一樣簡單。
下面的圖片比較了 Docker 和傳統虛擬化方式的不同之處,可見容器是在操作系統層面上實現虛擬化,直接復用本地主機的操作系統,而傳統方式則是在硬件層面實現。
在任何地方開發、部署和運行任何應用
Docker是一款針對程序開發人員和系統管理員來開發、部署、運行應用的一款虛擬化平臺。Docker 可以讓你像使用集裝箱一樣快速的組合成應用,并且可以像運輸標準集裝箱一樣,盡可能的屏蔽代碼層面的差異。Docker 會盡可能的縮短從代碼測試到產品部署的時間。
Docker 組件
- The Docker Engine – Docker Engine 是一個基于虛擬化技術的輕量級并且功能強大的開源容器引擎管理工具。它可以將不同的 work flow 組合起來構建成你的應用。
- Docker Hub 可以分享和管理你的images鏡像的一個 Saas 服務。
為什么選擇Docker
快速交付應用程序
- 我們希望你的開發環境能夠更好的提高你的工作效率。Docker容器能夠幫助開發人員、系統管理員、QA和版本控制工程師在一個生產環節中一起協同工作。我們制定了一套容器標準,而這套容器標準能夠使系統管理員更改容器的時候,程序員不需要關心容器的變化,而更專注自己的應用程序代碼。從而隔離開了開發和管理,簡化了開發和部署的成本。
- 我們使應用的構建方式更加簡單,可以快速的迭代你的應用,并且可以可視化的來查看應用的細微更改。這能夠幫助組織里邊的成員來更好的理解一個應用從構建到運行的過程。
- Docker 是一個輕量級的容器,所以它的速度是非常快的,而容器的啟動時間只需要一秒鐘,從而大大的減少了開發、測試和部署的時間。輕松部署和擴展
- Docker 容器可以運行在大多數的環境中,你可以在桌面環境、物理主機、虛擬主機再到數據中,私有或者公有云中部署。
- 因為 Docker 可以從多平臺下運行。你可以很容器的遷移你的應用程序。如果需要,你可以非常簡單的將應用程序從測試環境遷移到云,或者從云遷移到測試環境。
- Docker 是一個輕量級的容器,因此它可以在很短的時間內啟動和關閉。當你需要的時候,你可以啟動多個容器引擎,并且在不需要使用他們的時候,可以將他們全部關閉。
Get higher density and run more workloads
Docker的容器本身不需要額外創建虛擬機管理系統,因此你可以啟動多套Docker容器,這樣就可以充分發揮主機服務器的物理資源,也可以降低因為采購服務器licenses而帶來的額外成本。
快速構建 輕松管理
因為Docker上述輕便,快速的特性。可以使您的應用達到快速迭代的目的。每次小的變更,馬上就可以看到效果。而不用將若干個小變更積攢到一定程度再變更。每次變更一小部分其實是一種非常安全的方式。
Docker的安裝和使用
Docker CE 的安裝請參考官方文檔:
- 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 發行版: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)架構。
卸載舊版本
Docker的舊版本被稱為docker,docker.io 或docker-engine。如果已安裝,請卸載它們:
$ sudo apt-get remove docker docker-engine docker.io containerd runc
支持的存儲驅動
Docker CE在Ubuntu支持overlay2
,aufs
和btrfs
存儲驅動程序。
注意:在Docker Engine - Enterprise中,
btrfs
僅在SLES上受支持。有關更多詳細信息,請參閱btrfs上的文檔 。
對于Linux內核版本4及更高版本的新安裝,overlay2
支持并首選aufs
。Docker CE overlay2
默認使用存儲驅動程序。如果需要使用aufs
,則需要手動配置。見aufs
安裝 Docker CE
您可以根據需要以不同方式安裝Docker CE:
大多數用戶 設置Docker的存儲庫并從中進行安裝,以便于安裝和升級任務。這是推薦的方法。
有些用戶下載DEB軟件包并 手動安裝并完全手動管理升級。這在諸如在沒有訪問互聯網的氣隙系統上安裝Docker的情況下非常有用。
在測試和開發環境中,一些用戶選擇使用自動 便捷腳本來安裝Docker。
使用存儲庫安裝
在新主機上首次安裝Docker CE之前,需要設置Docker存儲庫。之后,您可以從存儲庫安裝和更新Docker。
設置存儲庫
-
更新
apt
包索引:$ sudo apt-get update
-
安裝包以允許
apt
通過HTTPS使用存儲庫:$ 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個字符,驗證您現在擁有帶指紋的密鑰 。$ 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]
-
使用以下命令設置穩定存儲庫。要添加 夜間或測試存儲庫,請在下面的命令中的單詞后添加單詞
nightly
或test
(或兩者)stable
。了解夜間和測試頻道。注意:下面的
lsb_release -cs
子命令返回Ubuntu發行版的名稱,例如xenial
。有時,在像Linux Mint這樣的發行版中,您可能需要更改$(lsb_release -cs)
為父Ubuntu發行版。例如,如果您正在使用Linux Mint Tessa
,則可以使用bionic
。Docker不對未經測試和不受支持的Ubuntu發行版提供任何保證。
x86_64 / amd64 對應的是:
```
$ 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,或者轉到下一步安裝特定版本:
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
有多個Docker存儲庫?
如果您啟用了多個Docker存儲庫,則在未指定
apt-get install
或apt-get update
命令中的版本的情況下安裝或更新始終會安裝盡可能高的版本,這可能不適合您的穩定性需求。 -
要安裝特定版本的Docker CE,請在repo中列出可用版本,然后選擇并安裝:
一個。列出您的倉庫中可用的版本:
$ 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
-
通過運行
hello-world
映像驗證是否正確安裝了Docker CE 。$ sudo docker run hello-world
此命令下載測試映像并在容器中運行它。當容器運行時,它會打印一條信息性消息并退出。
Docker CE已安裝并正在運行。該docker
組已創建,但未向其添加任何用戶。您需要使用它sudo
來運行Docker命令。繼續Linux postinstall以允許非特權用戶運行Docker命令和其他可選配置步驟。
添加daemon.json文件
運行 sudo docker run hello-world
,沒有返回結果,如下:
docker在本地沒有找到hello-world鏡像,也沒有從docker倉庫中拉取鏡像,出項這個問題的原因:是應為docker服務器再國外,我們在國內無法正常拉取鏡像,所以就需要我們為docker設置國內阿里云的鏡像加速器;
需要修改配置文件 /etc/docker/daemon.json 如下:
{
"registry-mirrors": ["https://alzgoonw.mirror.aliyuncs.com"]
}
先創建 daemon.json
后添加字段
重啟docker systemctl restart docker
查看docker 狀態 systemctl restart docker
運行 sudo docker run hello-world
,結果如下:
升級DOCKER CE
要升級Docker CE,請先運行sudo apt-get update
,然后按照 安裝說明選擇要安裝的新版本。
從包安裝
如果您無法使用Docker的存儲庫來安裝Docker CE,則可以下載.deb
適用于您的發行版的 文件并手動安裝。每次要升級Docker時都需要下載新文件。
- 去
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守護程序自動啟動。
-
通過運行
hello-world
映像驗證是否正確安裝了Docker CE 。$ sudo docker run hello-world
此命令下載測試映像并在容器中運行它。當容器運行時,它會打印一條信息性消息并退出。
Docker CE已安裝并正在運行。該docker
組已創建,但未向其添加任何用戶。您需要使用它sudo
來運行Docker命令。繼續執行Linux的安裝后步驟, 以允許非特權用戶運行Docker命令和其他可選配置步驟。
升級DOCKER CE
要升級Docker CE,請下載較新的軟件包文件并重復 安裝過程,指向新文件。
使用便捷腳本安裝
Docker在get.docker.com 和test.docker.com上提供了便捷腳本,用于快速,非交互地將Docker CE的邊緣和測試版本安裝到開發環境中。腳本的源代碼位于 docker-install
存儲庫中。 建議不要在生產環境中使用這些腳本,在使用它們之前,您應該了解潛在的風險:
- 腳本需要
root
或sudo
特權才能運行。因此,在運行腳本之前,應仔細檢查和審核腳本。 - 這些腳本會嘗試檢測您的Linux發行版和版本,并為您配置包管理系統。此外,腳本不允許您自定義任何安裝參數。從Docker的角度或您自己組織的指導方針和標準來看,這可能會導致配置不受支持。
- 腳本安裝包管理器的所有依賴項和建議,而不要求確認。這可能會安裝大量軟件包,具體取決于主機的當前配置。
- 該腳本不提供選項來指定要安裝的Docker版本,并安裝在“邊緣”通道中發布的最新版本。
- 如果已使用其他機制在主機上安裝了Docker,請不要使用便捷腳本。
此示例使用get.docker.com上的腳本在Linux上安裝最新版本的Docker CE。要安裝最新的測試版本,請改用test.docker.com。在下面的每個命令中,替換每次出現的get
with test
。
警告:
始終檢查從Internet下載的腳本,然后在本地運行它們。
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
如果您想將Docker用作非root用戶,您現在應該考慮將您的用戶添加到“docker”組,例如:
sudo usermod -aG docker your-user
請記得注銷并重新登錄才能生效!
警告:
將用戶添加到“docker”組會授予他們運行容器的能力,這些容器可用于獲取Docker主機上的root權限。 有關更多信息,請參閱 Docker守護程序攻擊面。
已安裝Docker CE。它會自動在DEB
基于發行版的分發上啟動。在RPM
基于On的 基礎上,您需要使用相應的systemctl
或service
命令手動啟動它 。如消息所示,非root用戶默認情況下無法運行Docker命令。
使用便捷腳本后升級DOCKER
如果您使用便捷腳本安裝了Docker,則應直接使用軟件包管理器升級Docker。重新運行便捷腳本沒有任何好處,如果它嘗試重新添加已添加到主機的存儲庫,則可能會導致問題。
卸載Docker CE
-
卸載Docker CE軟件包:
$ sudo apt-get purge docker-ce
-
主機上的圖像,容器,卷或自定義配置文件不會自動刪除。要刪除所有圖像,容器和卷:
$ sudo rm -rf /var/lib/docker
您必須手動刪除任何已編輯的配置文件。
·