教程:在Ubuntu上借助Docker管理Linux容器
【51CTO精選譯文】雖說標準的硬件虛擬化技術(比如KVM、Xen或Hyper-V)擅長于在一個物理主機上運行多個操作系統的完全隔離的實例,但這種虛擬化技術在性能、資源和資源配置時間等方面存在各種各樣的開銷。標準的機器虛擬化實際上可能沒有必要,這取決于你的實際使用場合。
另外一種輕型虛擬化方法就是所謂的Linux容器(LXC),它提供了操作系統級別的虛擬化。由于不存在運行虛擬機帶來的開銷,LXC讓用戶可以在輕型容器沙盒里面運行標準Linux操作系統的多個實例。如果你搭建一個可復制的開發/測試環境,或者在安全沙盒里面部署應用程序,容器就派得上大用場。
Docker就是為了便于部署Linux容器而開發的這樣一款開源工具。Docker正迅速成為容器技術方面的一項事實上的標準,已經被諸如Ubuntu和紅帽之類的各大Linux發行版所采用。
我在本教程中將演示如何在Ubuntu 14.04上,借助Docker管理Linux容器。請注意:對Ubuntu的早期版本而言,操作步驟可能略有不同。
眼下,Ubuntu上可用的Docker程序包只支持64位系統。想在32位機器上運行它,你就要利用源代碼構建32位版本的Docker(詳見這里)。
安裝Docker
借助apt-get命令,安裝Docker是件輕而易舉的事。
- $ sudo apt-get install docker.io
為了允許非根用戶也可以運行Docker,將你自己添加到docker群組。下面這個命令會允許當前用戶運行Docker,無需根用戶權限。
- $ sudo usermod -a -G docker $USER
退出,然后重新登錄,以激活群組成員的變化。
下一步,編輯Docker配置文件,以便更新Docker二進制代碼的位置。
- $ sudo vi /etc/default/docker.io
- DOCKER="/usr/bin/docker.io"
重啟Docker服務。
- $ sudo service docker.io restart
管理Docker容器
如果你想啟動Ubuntu操作系統的一個新的Docker容器,首先需要獲取Ubuntu Docker映像文件。下面這個命令會通過網絡下載Docker映像文件。
- $ docker pull ubuntu
你可以以一種交互模式來開啟Ubuntu Docker,如下所示。***一個參數“/bin/bash”是一旦啟動就將在容器里面執行的命令,這里是一個簡單的bash外殼命令。
- $ docker run -i -t ubuntu /bin/bash
上述命令會立即啟動一個Ubuntu容器(這正是容器的魅力所在!),并為你提供容器里面的外殼提示符。這時候,你應該能夠訪問沙盒環境里面的標準的Ubuntu操作系統了。
想退出Docker容器,在容器里面的提示符處鍵入“exit”。
你可以啟動不同形式的容器。比如,想啟動Fedora容器,請執行下面這個命令:
- $ docker.io run -i -t fedora /bin/bash
如果本地沒有Fedora Docker映像文件,該命令就會首先自動下載映像文件,然后啟動Docker。
如果你想啟動采用某個發行版版本的容器,也可以這么做。比如說,想啟動Ubuntu 13.04 Docker,請執行下面這個命令:
- $ docker.io run -i -t ubuntu:13.04 /bin/bash
容器網絡
Docker使用Linux網橋將容器彼此互聯起來,并將它們連接到外部網絡。安裝了Docker后,你應該會看到默認情況下自動組建的docker0 Linux網橋。你創建的每個容器都將連接到docker0網橋接口。
自定義Linux網橋
如果你想,也可以使用自定義Linux網橋將諸容器互聯起來。為此,你可以建立一個自定義網橋,并對它進行配置,如下所示。你可以為該網橋分配一個單獨的子網,并且從子網為Docker分配IP地址。我會使用10.0.0.0/24作為Docker子網。
- $ sudo apt-get install bridge-utils
- $ sudo brctl addbr br0
- $ sudo ifconfig br0 10.0.0.1 netmask 255.255.255.0
想讓Docker使用自定義網橋,將“-b=br0”添加到/etc/default/docker.io中的DOCKER_OPTS變量,然后重啟Docker服務。
- $ sudo service docker.io restart
至此,任何新的容器都會連接到br0,其IP地址會自動從10.0.0.0/24來分配。
其他定制
還有另外幾種方法可以定制Docker的默認網絡設置,主要是通過改動/etc/default/docker.io中的DOCKER_OPTS變量來實現。
- “-dns 8.8.8.8 -dns 8.8.4.4”:指定容器使用的DNS服務器。
- “-icc=false”:讓諸容器彼此隔離開來。
故障排查
1. 運行docker.io命令時,你會遇到下面這個錯誤。
- dial unix /var/run/docker.sock: no such file or directory(沒有此類文件或目錄)
出現這個錯誤,可能是由于Docker守護程序沒在運行。檢查Docker守護程序的狀態,確保先啟動它。
- $ sudo service docker.io status
- $ sudo service docker.io start
原文鏈接:http://xmodulo.com/2014/05/manage-linux-containers-docker-ubuntu.html