Docker介紹及安裝詳解


1:Docker簡介

Docker 是一種運行於 Linux 和 Windows 上的軟件,用於創建、管理和編排容器。

Docker 是在 GitHub 上開發的 Moby 開源項目的一部分。

Docker 公司,位於舊金山,是整個 Moby 開源項目的維護者。Docker 公司還提供包含支持服務的商業版本的 Docker。

2:Docker安裝

2.1:Windows安裝Docker

在了解 Windows 版 Docker 之前,讀者首先要知道這是由 Docker 公司提供的一個產品。這意味着它易於下載,並且有一個很靈活的安裝器(installer)。

Windows 版 Docker 需要運行在一個安裝了 64 位 Windows 10 操作系統的計算機上,通過啟動一個獨立的引擎來提供 Docker 環境。

其次,讀者需要知曉 Windows 版 Docker 是一個社區版本(Community Edition,CE)的應用,並不是為生產環境設計的。

最后,讀者還需要知道 Windows 版 Docker 在某些版本特性上可能是延后支持的。這是因為 Docker 公司對該產品的定位是穩定性第一,新特性其次。

以上 3 點被添加到 Windows 版 Docker 這個安裝快捷簡單,但並不支持生產環境部署的產品當中。

接下來我們一起了解一下如何安裝 Windows 版 Docker。

在安裝之前,Windows 版 Docker 的環境有以下要求。

Windows 10 Pro(專業版) / Enterprise(企業版) / Education(教育版)(1607 Anniversary Update、Build 14393 或者更新的版本)。

Windows 必須是 64 位的版本。

需要啟用 Windows 操作系統中的 Hyper-V 和容器特性。

接下來的步驟會假設讀者的計算機已經開啟了 BIOS 設置中的硬件虛擬化支持。如果沒有開啟,讀者需要在機器上執行下面的步驟。

首先,讀者需要確認在 Windows 10 操作系統中,Hyper-V 和容器特性已安裝並且開啟。

1) 右鍵單擊 Windows 開始按鈕並選擇“應用和功能”頁面。

2) 單擊“程序和功能”鏈接。

3) 單擊“啟用或關閉Windows功能”。

4) 確認Hyper-V和容器復選框已經被勾選,並單擊確定按鈕。

按上述步驟操作完成后,會安裝並開啟 Hyper-V 和容器特性,如下圖所示。這時需要重啟操作系統。

 

其中,容器特性只有在 summer 2016 Windows 10 Anniversary Update(build 14393)版本或更高版本上才能開啟。

當讀者完成 Hyper-V 和容器特性的安裝並重啟機器之后,就可以安裝 Windows 版 Docker 了。

1) 訪問 Docker 的下載(https://www.docker.com/products/docker-desktop)頁面,並單擊其中的 Download for Windows 按鈕。

2) 單擊后會跳轉到 Docker 商店,需要讀者使用自己的 Docker ID 進行登錄。

3) 單擊任意 Get Docker 下載鏈接。Docker for Windows 分為穩定版(Stable)和搶鮮版(Edge)。搶鮮版當中包含一些新特性,但是可能不夠穩定。單擊下載鏈接后,會將名為 Docker for Windows Installer.exe 的安裝包下載到默認下載目錄。

4) 找到上一步下載的安裝包並運行即可。

以管理員身份運行安裝向導,並按照提示一步一步完成整個安裝過程。安裝完成后 Docker 會作為系統服務自動啟動,並且在 Windows 的通知欄看到 Docker 的大鯨魚圖標。

恭喜!到目前為止已經成功完成 Windows 版 Docker 的安裝。

打開命令行或者 PowerShell 界面,並嘗試執docker version命令。

Client:
Version: 18.01.0-ce
API version: 1.35
Go version: go1.9.2
Git commit: 03596f5
Built: Wed Jan 10 20:05:55 2018
OS/Arch: windows/amd64
Experimental: false
Orchestrator: swarm

Server:
Engine:
Version: 18.01.0-ce
API version: 1.35 (minimum version 1.12)
Go version: go1.9.2
Git commit: 03596f5
Built: Wed Jan 10 20:13:12 2018
OS/Arch: linux/amd64
Experimental: false

注意觀察命令輸出內容,其中 Server 部分中的 OS/Arch 屬性展示了當前的操作系統是 linux/amd64。

這是因為在默認安裝方式中,Docker daemon 是運行在 Hyper-V 虛擬機中的一個輕量級 Linux 上的。這種情況下,讀者只能在 Windows 版 Docker 上運行 Linux 容器。

如果讀者想要運行原生 Windows 容器(Native Windows Container),可以右擊 Windows 通知欄中的 Docker 鯨魚圖標,並選擇“切換到 Windows 容器”。

使用下面的命令也可以完成切換(進入 \Program Files\Docker\Docker 目錄下執行)。

C:\Program Files\Docker\Docker> .\dockercli -SwitchDaemon

如果沒有開啟 Windows 容器特性,則會看到下圖的提示。

如果已經開啟了 Windows 容器特性,則只需要花費數秒就能完成切換。一旦切換完成,在命令行中執行docker version指令的輸出內容如下。

C:\> docker version
Client:
<Snip>

Server:
Engine:
Version: 18.01.0-ce
API version: 1.35 (minimum version 1.24)
Go version: go1.9.2
Git commit: 03596f5
Built: Wed Jan 10 20:20:36 2018
OS/Arch: windows/amd64
Experimental: true

可以看到,現在 Server 版本信息變成了 windows/amd64。這意味着 Docker daemon 運行在原生 Windows 內核上,並且只能運行 Windows 容器了。

同時也可以發現,Experimental 這個屬性的值為 true。這表示當前運行的 Docker 版本是實驗版本。

前面提到過,Docker for Windows有兩個版本:穩定版和搶鮮版。 Windows 容器是搶鮮版中的一個實驗特性。

讀者可以通過運行dockercli -Version命令來查看當前的 Docker 版本。

dockercli 命令在 C:\Program Files\Docker\Docker 目錄下。

C:\Program Files\Docker\Docker> .\dockercli -Version

Docker for Windows
Version: 18.01.0-ce-win48 (15285)
Channel: edge
Sha1: ee2282129dec07b8c67890bd26865c8eccdea88e
OS Name: Windows 10 Pro
Windows Edition: Professional
Windows Build Number: 16299

下面展示了一些常用的能夠正常執行的 Docker 命令。

> docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE

> docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

> docker system info
Containers: 1
Running: 0
Paused: 0
Stopped: 1
Images: 6
Server Version: 17.12.0-ce
Storage Driver: windowsfilter
<Snip>

Windows 版 Docker 包括 Docker 引擎(客戶端和 daemon)、Docker Compose、Docker Machine 以及 Docker Notary 命令行。

通過下列命令確認各個模塊已經成功安裝。

C:\> docker --version
Docker version 18.01.0-ce, build 03596f5

C:\> docker-compose --version
docker-compose version 1.18.0, build 8dd22a96

C:\> docker-machine --version
docker-machine.exe version 0.13.0, build 9ba6da9

C:\> notary version
notary
Version: 0.4.3
Git commit: 9211198

2.2:Mac安裝Docker

Mac 版 Docker 也是由 Docker 公司提供的一個產品。

咱們大可以放心使用 Docker,而無須先成為一個內核工程師,也不必通過很極客的方法將 Docker 安裝到 Mac。

Mac 版 Docker 是由 Docker 公司基於社區版的 Docker 提供的一個產品。這意味着在筆記本上安裝單引擎版本的 Docker 是非常簡單的。

但是同時,這也意味着 Mac 版 Docker 並不是為生產環境而設計的。如果你聽說過 boot2docker,那么 Mac 版 Docker 就是一個流暢、簡單並且穩定版的 boot2docker。

對於 Mac 版 Docker 來說,提供基於 Mac 原生操作系統中 Darwin 內核的 Docker 引擎沒有什么意義。

所以在 Mac 版 Docker 當中,Docker daemon 是運行在一個輕量級的 Linux VM 之上的。

Mac 版 Docker 通過對外提供 daemon 和 API 的方式與 Mac 環境實現無縫集成。

這意味着讀者可以在 Mac 上打開終端並直接使用 Docker 命令。

盡管在 Mac 上實現了無縫集成,還是要謹記 Mac 版 Docker 底層是基於 Linux VM 運行的,所以說 Mac 版 Docker 只能運行基於 Linux 的 Docker 容器。

不過這樣已經很好了,因為大部分容器實際上都是基於 Linux 的。

下圖展示了 Mac 版 Docker 的抽象架構。

Mac 版 Docker 采用 HyperKit9 實現了一個極其輕量級的 Hypervisor。HyperKit 是基於 Xhyve Hypervisor 的。

Mac 版 Docker 也利用了 DataKit 的某些特性,並運行了一個高度優化后的 Linux 發行版 Moby(基於 Alpine Linux)。

接下來開始安裝 Mac 版 Docker。

1) 打開瀏覽器,訪問Docker的下載頁面(https://www.docker.com/products/docker-desktop),然后單擊 Download for Mac 按鈕。

2) 頁面會跳轉到 Docker 商店,需要讀者使用自己的 Docker ID 和密碼進行登錄。

3) 單擊下載鏈接 Get Docker CE。

Mac 版 Docker 分為兩個版本:穩定版(Stable)和搶鮮版(Edge)。搶鮮版包含一些新特性,但是並不保證穩定運行。

單擊鏈接后,會下載 Docker.dmg 安裝包。

4) 運行上一步中下載的 Docker.dmg 文件。將代表 Docker 的鯨魚圖標拖拽到應用文件夾(Application folder)中。

5) 打開應用文件夾(可能會自動打開)並且雙擊 Docker 應用圖標來啟動 Docker。可能需要確認是否運行,因為這是從互聯網下載的應用程序。

6) 輸入 Mac 用戶密碼,這樣安裝程序可以獲取到創建組件所需的權限。

7) Docker daemon 進程啟動。

一個活動的鯨魚圖標會在屏幕上方狀態欄中出現。一旦 Docker 成功運行,鯨魚圖標就靜止了。可以單擊鯨魚圖標來管理 DfM。

DfM 現在已經安裝完成,讀者可以打開一個終端,並運行一些常用的 Docker 指令。

嘗試運行下面的命令。

$ docker version
Client:
Version: 17.05.0-ce
API version: 1.29
Go version: go1.7.5
Git commit: 89658be
Built: Thu May 4 21:43:09 2017
OS/Arch: darwin/amd64

Server:
Version: 17.05.0-ce
API version: 1.29 (minimum version 1.12)
Go version: go1.7.5
Git commit: 89658be
Built: Thu May 4 21:43:09 2017
OS/Arch: linux/amd64
Experimental: true

注意,Server 的 OS/Arch 屬性中顯示的值是 linux/amd64。這是因為 daemon 是基於前文提到過的 Linux VM 運行的。

Client 組件是原生的 Mac 應用,運行在 Mac 操作系統 Darwin 內核之上(OS/Arch: darwin/amd64)。

除此之外,還需要注意當前 Docker 版本是一個實驗性質的版本(Experimental: true)。這是因為它是搶鮮版,搶鮮版中開啟了一些實驗特性。

運行其他 Docker 命令。

$ docker --version
Docker version 17.05.0-ce, build 89658be

$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE

$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

Mac 版 Docker 安裝了 Docker 引擎(客戶端以及服務端守護程序)、Docker Compose、Docker machine 以及 Notary 命令行。

下面的 3 條命令展示了如何確認這些組件是否成功安裝,以及組件的版本信息。

$ docker --version
Docker version 17.05.0-ce, build 89658be

$ docker-compose --version
docker-compose version 1.13.0, build 1719ceb

$ docker-machine --version
docker-machine version 0.11.0, build 5b27455
$ notary version
notary
Version: 0.4.3
Git commit: 9211198

2.3:Linux安裝Docker

在 Linux 上安裝 Docker 是常見的安裝場景,並且安裝過程非常簡單。

通常難點在於 Linux 不同發行版之間的輕微區別,比如 Ubuntu 和 CentOS 之間的差異。

接下來的示例基於 Ubuntu 版本 Linux,同樣適用於更低或者更高的版本。

理論上,下面的示例在 CentOS 的各種版本上也是可以執行的。至於 Linux 操作系統是安裝在自己的數據中心,還是第三方公有雲,或是筆記本的虛擬機上,都沒有任何的區別。唯一需求就是這台機器是 Linux 操作系統,並且能夠訪問 https://get.docker.com。

首先讀者需要選擇安裝的 Docker 版本。當前有兩個版本可供選擇:社區版(Community Edition,CE)和企業版(Enterprise Edition,EE)。

Docker CE 是免費的,並且是接下來示例中將要使用的版本。

Docker EE 包含 Docker CE 中的全部功能,還包括了商業支持以及與其他 Docker 產品的集成,比如 Docker 可信鏡像庫和通用控制面板。

下面的例子使用wget命令來運行一個 Shell 腳本,完成 Docker CE 的安裝。

更多其他在 Linux 上安裝 Docker 的方式,可以打開 Docker 主頁面(www.docker.com),單擊頁面中 Get Started 按鈕來獲取。

注:在開始下面的步驟之前,要確認系統升級到最新的包,並且打了相應的安全補丁。

1) 在 Linux 機器上打開一個新的 Shell。

2) 使用wget從 https://get.docker.com 獲取並運行 Docker 安裝腳本,然后采用 Shell 中管道(pipe)的方式來執行這個腳本。

$ wget -qO- https://get.docker.com/ | sh

modprobe: FATAL: Module aufs not found /lib/modules/4.4.0-36-generic
+ sh -c 'sleep 3; yum -y -q install docker-engine'
<Snip>
If you would like to use Docker as a non-root user, you should
now consider adding your user to the "docker" group with
something like:

sudo usermod -aG docker your-user

Remember that you will have to log out and back in...

3) 最好通過非 root 用戶來使用 Docker。這時需要添加非 root 用戶到本地 Docker Unix 組當中。

下面的命令展示了如何把名為 npoulton 的用戶添加到 Docker 組中,以及如何確認操作是否執行成功。

$ sudo usermod -aG docker npoulton

$ cat /etc/group | grep docker
docker:x:999:npoulton

如果當前登錄用戶就是要添加到 Docker 組中的用戶的話,則需要重新登錄,組權限設置才會生效。

至此 Docker 已經在 Linux 上安裝成功。運行下面命令來確認安裝結果。

$ docker --version
Docker version 18.01.0-ce, build 03596f5

$ docker system info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 18.01.0-ce
Storage Driver: overlay2
Backing Filesystem: extfs
<Snip>

如果上述步驟在自己的 Linux 發行版中無法成功執行,可以訪問 Docker Docs 網站(https://docs.docker.com)並單擊與自己的版本相關的那個鏈接。

接下來頁面會跳轉到 Docker 官方提供的適合當前版本的安裝指南頁面,這個安裝指南通常會保持更新。

但是需要注意,Docker 網站上提供的指令使用了包管理器,相比前面的例子需要更多的步驟才能完成安裝操作。

實際上,如果讀者使用瀏覽器打開網頁 https://get.docker.com,會發現這其實就是一個 Shell 腳本,腳本中已經幫讀者定義好了安裝相關的指令,包括設置 Docker 為系統開啟自啟動。

如果未從官方 Docker 倉庫下載源碼,則最終安裝的可能是 Docker 的一個復制版本。過去一些 Linux 發行商選擇復制了 Docker 的代碼,並基於此開發了一些定制化的版本。

需要注意類似的情況,因為運行一個與 Docker 官方版本不同的復制版,可能遇到異常退出的情況。

如果本意就是采用該版本運行,那這不是問題。但是如果本意並非如此,復制版本中發行商提交的一些改動可能導致其版本無法與 Docker 官方版本相兼容。這樣就無法從 Docker 公司或者 Docker 公司授權的合作伙伴那里獲得商業支持。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM