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