閱讀406 返回首頁    go 京東網上商城


《第一本Docker書(修訂版)》——2.2 在Ubuntu和Debian中安裝Docker

本節書摘來自異步社區《第一本Docker書(修訂版)》一書中的第2章,第2.2節,作者:【澳】James Turnbull(詹姆斯•特恩布爾)著,更多章節內容可以訪問雲棲社區“異步社區”公眾號查看

2.2 在Ubuntu和Debian中安裝Docker

目前,官方支持在以下版本的Ubuntu和Debian中安裝Docker:

Ubuntu Wily 15.10(64位);
Ubuntu Vivid 15.04(64位);
Ubuntu Trusty 14.04(LTS)(64位);
Ubuntu Precise 12.04(LTS)(64位);
Ubuntu Raring 13.04(64位);
Ubuntu Saucy 13.10(64位);
Debian 8.0 Jessie(64位);
Debian 7.7 Wheezy(64位)。
注意
這並不意味著上麵清單之外的Ubuntu(或Debian)版本就不能安裝Docker。隻要有適當的內核和Docker所必需的支持,其他版本的Ubuntu也是可以安裝Docker的,隻不過這些版本並沒有得到官方支持,因此,遇到的bug可能無法得到官方的修複。
安裝之前,還要先確認一下已經安裝了Docker所需的前提條件。我創建了一個要安裝Docker的全新Ubuntu 14.04 LTS 64位宿主機,稱之為darknight.example.com。
2.2.1 檢查前提條件
在Ubuntu宿主機中安裝並運行Docker所需的前提條件並不多,下麵一一列出。

1.內核
首先,確認已經安裝了能滿足要求的Linux內核。可以通過uname命令來檢查內核版本信息,如代碼清單2-1所示。

代碼清單2-1 檢查Ubuntu內核的版本

$ uname -a
Linux darknight.example.com 3.13.0-43-generic #72-Ubuntu SMP Mon Dec
8 19:35:06 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

可以看到,這裏安裝的是3.13.0 x86_64版本的內核。這是Ubuntu 14.04及更高版本默認的內核。

如果使用Ubuntu較早的發行版,可以有一個較早的內核。應該可以輕鬆地用apt-get把Ubuntu升級到最新的內核,如代碼清單2-2所示。

代碼清單2-2 在Ubuntu Precise中安裝3.13內核

$ sudo apt-get update
$ sudo apt-get install linux-headers-3.13.0-43-generic
  linux-image-3.13.0-43-generic linux-headers-3.13.0-43

注意
本書中的所有操作都使用sudo來獲取所需的root權限。
然後,就可以更新Grub啟動加載器來加載新內核,如代碼清單2-3所示。

代碼清單2-3 更新Ubuntu Precise的啟動加載器

$ sudo update-grub
安裝完成後需要重啟宿主機來啟用新的3.8內核或者更新的內核,如代碼清單2-4所示。

代碼清單2-4 重啟Ubuntu宿主機

$ sudo reboot
重啟之後,可以再次使用uname –a來確認已經運行了正確版本的內核。

2.檢查Device Mapper
這裏將使用Device Mapper作為存儲驅動。自2.6.9版本的Linux內核開始已經集成了Device Mapper,並且提供了一個將塊設備映射到高級虛擬設備的方法。Device Mapper支持“自動精簡配置”[18](thin-provisioning)的概念,可以在一種文件係統中存儲多台虛擬設備(Docker鏡像中的層)。因此,用Device Mapper作為Docker的存儲驅動是再合適不過了。

任何Ubuntu 12.04或更高版本的宿主機應該都已經安裝了Device Mapper,可以通過代碼清單2-5所示的命令來確認是否已經安裝。

代碼清單2-5 檢查Device Mapper

$ ls -l /sys/class/misc/device-mapper
lrwxrwxrwx 1 root root 0 Oct  5 18:50 /sys/class/misc/device-mapper
  -> ../../devices/virtual/misc/device-mapper

也可以在/proc/devices文件中檢查是否有device-mapper條目,如代碼清單2-6所示。

代碼清單2-6 在Ubuntu的proc中檢查Device Mapper

$ sudo grep device-mapper /proc/devices
如果沒有出現device-mapper的相關信息,也可以嚐試加載dm_mod模塊,如代碼清單2-7所示。

代碼清單2-7 加載Device Mapper模塊

$ sudo modprobe dm_mod
cgroup和命名空間自2.6版本開始已經集成在Linux內核中了。2.6.38以後的內核對cgroup和命名空間都提供了良好的支持,基本上也沒有什麼bug。

2.2.2 安裝Docker
現在“萬事俱備,隻欠東風”。我們將使用Docker團隊提供的DEB軟件包來安裝Docker。

首先,要添加Docker的APT倉庫,如代碼清單2-8所示。其間,可能會提示我們確認添加倉庫並自動將倉庫的GPG公鑰添加到宿主機中。

代碼清單2-8 添加Docker的ATP倉庫

$ sudo sh -c "echo deb https://apt.dockerproject.org/repo ubuntu- 
  trusty main > /etc/apt/sources.list.d/docker.list"

應該將trusty替換為主機的Ubuntu發行版本。這可以通過運行lsb_release命令來實現,如代碼清單2-9所示。

代碼清單2-9 查主機Ubuntu發行版本

$ sudo lsb_release --codename | cut -f2
trusty

接下來,要添加Docker倉庫的GPG密鑰,如代碼清單2-10所示。

代碼清單2-10 添加Docker倉庫的GPG密鑰

$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net
:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

之後,需要更新APT源,如代碼清單2-11所示。

代碼清單2-11 更新APT源

$ sudo apt-get update
現在,就可以安裝Docker軟件包了,如代碼清單2-12所示。

代碼清單2-12 在Ubuntu中安裝Docker

$ sudo apt-get install docker-engine
執行該命令後,係統會安裝Docker軟件包以及一些必需的軟件包。

提示
自Docker 1.8.0開始,Docker的軟件包名稱已經從lxc-docker變為docker-engine。
安裝完畢,用docker info命令應該能夠確認Docker是否已經正常安裝並運行了,如代碼清單2-13所示。

代碼清單2-13 確認Docker已經安裝在Ubuntu中

$ sudo docker info
Containers: 0
Images: 0
. . .

2.2.3 Docker與UFW
在Ubuntu中,如果使用UFW[19],即Uncomplicated Firewall,那麼還需對其做一點兒改動才能讓Docker工作。Docker使用一個網橋來管理容器中的網絡。默認情況下,UFW會丟棄所有轉發的數據包(也稱分組)。因此,需要在UFW中啟用數據包的轉發,這樣才能讓Docker正常運行。我們隻需要對/etc/default/ufw文件做一些改動即可。我們需要將這個文件中代碼清單2-14所示的代碼替換為代碼清單2-15所示的代碼。

代碼清單2-14 原始的UFW轉發策略

DEFAULT_FORWARD_POLICY="DROP"
代碼清單2-15 新的UFW轉發策略

DEFAULT_FORWARD_POLICY="ACCEPT"
保存修改內容並重新加載UFW即可,如代碼清單2-16所示。

代碼清單2-16 重新加載UFW防火牆

$ sudo ufw reload

最後更新:2017-06-01 14:02:01

  上一篇:go  《第一本Docker書(修訂版)》——2.3 在Red Hat和Red Hat係發行版中安裝Docker
  下一篇:go  《第一本Docker書(修訂版)》——第2章 安裝Docker 2.1安裝Docker的先決條件