Docker 支持以下的 Ubuntu 版本
* Ubuntu Trusty 14.04 (LTS) (64-bit)
* Ubuntu Precise 12.04 (LTS) (64-bit)
* Ubuntu Raring 13.04 and Saucy 13.10 (64 bit)
這個頁面可以指導你安裝 Docker 包管理器,并了解其中的安裝機制。通過下邊的安裝方式可以確保你獲取的是最新版本的 Docker。如果你想要使用 'Ubuntu包管理器' 安裝,你可以查閱你的 Ubuntu 文檔。
### 前提條件
Docker 需要在64位版本的Ubuntu上安裝。此外,你還需要保證你的 Ubuntu 內核的最小版本不低于 3.10,其中3.10 小版本和更新維護版也是可以使用的。
在低于3.10版本的內核上運行 Docker 會丟失一部分功能。在這些舊的版本上運行 Docker 會出現一些BUG,這些BUG在一定的條件里會導致數據的丟失,或者報一些嚴重的錯誤。
打開控制臺使用?`uname -r`命令來查看你當前的內核版本。
~~~
$ uname -r
3.11.0-15-generic
~~~
> Docker 要求 Ubuntu 系統的內核版本高于 3.10 ,查看本頁面的前提條件來驗證你的Ubuntu版本是否支持 Docker 。
### Trusty 14.04
這個版本不需要考慮前提條件
### Precise 12.04 (LTS)
對于Ubuntu Precise版本, 安裝Docker需要內核在3.13及以上版本。如果你的內核版本低于3.13你需要升級你的內核。 通過下邊的表,請查閱下邊的表來確認你的環境需要哪些包。
| linux-image-generic-lts-trusty | Generic Linux kernel image. This kernel has AUFS built in. This is required to run Docker. |
| linux-headers-generic-lts-trusty | Allows packages such as ZFS and VirtualBox guest additions which depend on them. If you didn't install the headers for your existing kernel, then you can skip these headers for the"trusty" kernel. If you're unsure, you should include this package for safety. |
| xserver-xorg-lts-trusty | Optional in non-graphical environments without Unity/Xorg.?_Required_?when running Docker on machine with a graphical environment.
To learn more about the reasons for these packages, read the installation instructions for backported kernels, specifically the?[LTS Enablement Stack](https://wiki.ubuntu.com/Kernel/LTSEnablementStack)?— refer to note 5 under each version.
|
| libgl1-mesa-glx-lts-trusty |
?
通過下邊的操作來升級你的內核和安裝額外的包
1. 在Ubuntu系統中打開命令行控制臺。
2. 升級你的包管理器
~~~
$ sudo apt-get update
~~~
3. 安裝所有必須和可選的包
~~~
$ sudo apt-get install linux-image-generic-lts-trusty
~~~
根據個人的系統環境來選擇是否安裝更多的包(前表列出)。
4. 重啟系統
~~~
$ sudo reboot
~~~
5. 等到系統重啟成功之后,查看[安裝Docker](https://github.com/widuu/chinese_docker/blob/master/installation/ubuntu.md#Ubuntu%E5%AE%89%E8%A3%85Docker)
### Saucy 13.10 (64 bit)
Docker 使用 AUFS 作為默認的后端存儲方式,如果你之前沒有安裝 AUFS ,Docker 在安裝過程中會自動添加。
## Ubuntu安裝Docker
首先要確認你的 Ubuntu 版本是否符合安裝 Docker 的前提條件。如果沒有問題,你可以通過下邊的方式來安裝 Docker :
1. 使用具有`sudo`權限的用戶來登錄你的Ubuntu。
2. 查看你是否安裝了`wget`
~~~
$ which wget
~~~
如果`wget`沒有安裝,先升級包管理器,然后再安裝它。
~~~
$ sudo apt-get update $ sudo apt-get install wget
~~~
3. 獲取最新版本的 Docker 安裝包
~~~
$ wget -qO- https://get.docker.com/ | sh
~~~
系統會提示你輸入`sudo`密碼,輸入完成之后,就會下載腳本并且安裝Docker及依賴包。
4. 驗證 Docker 是否被正確的安裝
~~~
$ sudo docker run hello-world
~~~
上邊的命令會下載一個測試鏡像,并在容器內運行這個鏡像。
## Ubuntu Docker可選配置
這部分主要介紹了 Docker 的可選配置項,使用這些配置能夠讓 Docker 在 Ubuntu 上更好的工作。
* 創建 Docker 用戶組
* 調整內存和交換空間(swap accounting)
* 啟用防火墻的端口轉發(UFW)
* 為 Docker 配置DNS服務
### 創建 Docker 用戶組
docker 進程通過監聽一個 Unix Socket 來替代 TCP 端口。在默認情況下,docker 的 Unix Socket屬于`root`用戶,當然其他用戶可以使用`sudo`方式來訪問。因為這個原因, docker 進程就一直是`root`用戶運行的。
為了在使用?`docker`?命令的時候前邊不再加`sudo`,我們需要創建一個叫?`docker`?的用戶組,并且為用戶組添加用戶。然后在?`docker`?進程啟動的時候,我們的?`docker`?群組有了 Unix Socket 的所有權,可以對 Socket 文件進行讀寫。
> 注意:`docker`?群組就相當于root用戶。有關系統安全影響的細節,請查看?[Docker 進程表面攻擊細節](https://github.com/widuu/chinese_docker/blob/master/installation)
創建?`docker`?用戶組并添加用戶
1. 使用具有`sudo`權限的用戶來登錄你的Ubuntu。
在這過程中,我們假設你已經登錄了Ubuntu。
2. 創建?`docker`?用戶組并添加用戶。
~~~
$ sudo usermod -aG docker ubuntu
~~~
3. 注銷登錄并重新登錄
這里要確保你運行用戶的權限。
4. 驗證?`docker`?用戶不使用?`sudo`?命令開執行?`Docker`
~~~
$ docker run hello-world
~~~
### 調整內存和交換空間(swap accounting)
當我們使用 Docker 運行一個鏡像的時候,我們可能會看到如下的信息提示:
~~~
WARNING: Your kernel does not support cgroup swap limit. WARNING: Your
kernel does not support swap limit capabilities. Limitation discarded.、
~~~
為了防止以上錯誤信息提示的出現,我們需要在系統中啟用內存和交換空間。我們需要修改系統的 GUN GRUB (GNU GRand Unified Bootloader) 來啟用內存和交換空間。開啟方法如下:
1. 使用具有`sudo`權限的用戶來登錄你的Ubuntu。
2. 編輯?`/etc/default/grub`?文件
3. 設置?`GRUB_CMDLINE_LINUX`?的值如下:
~~~
GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
~~~
4. 保存和關閉文件
5. 更新 GRUB
~~~
$ sudo update-grub
~~~
6. 重啟你的系統。
### 允許UFW端口轉發
當你在運行?`docker`?的宿主主機上使用UFW(簡單的防火墻)。你需要做一些額外的配置。Docker 使用橋接的方式來管理網絡。默認情況下,UFW 過濾所有的端口轉發策略。因此,當在UFW啟用的情況下使用?`docker`?,你必須適當的設置UFW的端口轉發策略。
默認情況下UFW是過濾掉所有的入站規則。如果其他的主機能夠訪問你的容器。你需要允許Docker的默認端口(2375)的所有連接。
設置 UFW 允許Docker 端口的入站規則:
1. 使用具有`sudo`權限的用戶來登錄你的Ubuntu。
2. 驗證UFW的安裝和啟用狀態
~~~
$ sudo ufw status
~~~
3. 打開和編輯`/etc/default/ufw`文件
~~~
$ sudo nano /etc/default/ufw
~~~
4. 設置?`DEFAULT_FORWARD_POLICY`?如下:
DEFAULT_FORWARD_POLICY="ACCEPT"
5. 保存關閉文件。
6. 重新加載UFW來使新規則生效。
~~~
$ sudo ufw reload
~~~
7. 允許 Docker 端口的入站規則
~~~
$ sudo ufw allow 2375/tcp
~~~
### Docker 配置 DNS 服務
無論是Ubuntu還是Ubuntu 桌面繁衍版在系統運行的時候都是使用`/etc/resolv.conf`配置文件中的127.0.0.1作為域名服務器(nameserver)。NetworkManager設置dnsmasq使用真實的dns服務器連接,并且設置 /etc/resolv.conf的域名服務為127.0.0.1。
在桌面環境下使用這些配置來運行 docker 容器的時候, Docker 用戶會看到如下的警告:
~~~
WARNING: Local (127.0.0.1) DNS resolver found in resolv.conf and containers
can't use it. Using default external servers : [8.8.8.8 8.8.4.4]
~~~
該警告是因為 Docker 容器不能使用本地的DNS服務。相反 Docker 使用一個默認的外部域名服務器。
為了避免此警告,你可以給 Docker 容器指定一個DNS服務器。或者你可以禁用 NetworkManager 的?`dnsmasq`。不過當禁止?`dnsmasq`?可能是某些網絡的DNS解析速度變慢。
為 Docker 指定一個DNS服務器
1. 使用具有`sudo`權限的用戶來登錄你的Ubuntu。
2. 打開并編輯?`/etc/default/docker`
~~~
$ sudo nano /etc/default/docker
~~~
3. 添加設置
~~~
DOCKER_OPTS="--dns 8.8.8.8"
~~~
使用8.8.8.8替換如192.168.1.1的本地DNS服務器。你可以指定多個DNS服務器,多個DNS服務器使用空格分割例如
~~~
--dns 8.8.8.8 --dns 192.168.1.1
~~~
> 警告:如果你正在使用的電腦需要連接到不同的網絡,一定要選擇一個公共DNS服務器。
4. 保存關閉文件。
5. 重啟 Docker 進程
~~~
$ sudo restart docker
~~~
或者,作為替代先前的操作過程,禁止NetworkManager中的`dnsmasq`(這樣會使你的網絡變慢)
1. 打開和編輯?`/etc/default/docker`
~~~
$ sudo nano /etc/NetworkManager/NetworkManager.conf
~~~
2. 注釋掉 dns = dsnmasq:
~~~
dns=dnsmasq
~~~
3. 保存關閉文件
4. 重啟NetworkManager 和 Docker
~~~
$ sudo restart network-manager $ sudo restart docker
~~~
### 升級Docker
在`wget`的時候使用`-N`參數來安裝最新版本的Docker:
~~~
$ wget -N https://get.docker.com/ | sh
~~~
- 關于Docker
- 鏡像簡介
- 安裝篇
- Mac OS X
- Ubuntu
- Red Hat Enterprise Linux
- CentOS
- Debain
- Gentoo
- Google Cloud Platform
- Rackspace Cloud
- Amazon EC2
- IBM Softlayer
- Arch Linux
- FrugalWare
- Fedora
- openSUSE
- CRUX Linux
- Microsoft Windows
- Binaries
- 用戶指南
- 使用Docker Hub
- 在Docker中運行應用
- 使用容器
- 使用docker鏡像
- 連接容器
- 管理容器數據
- 使用Docker Hub
- Docker Hub
- 賬戶
- 存儲庫
- 自動構建
- 官方案例
- Docker中運行MongoDB
- Docker中運行Redis服務
- Docker中運行PostgreSQL
- Docker中運行Riak服務
- Docker中運行SSH進程服務
- Docker中運行CouchDB服務
- Docker中運行Apt-Cacher-ng服務