406
京東網上商城
《第一本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