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