在ubuntu下安裝docker:
按照http://dockerpool.com/static/books/docker_practice/install/ubuntu.html的說明,根據步驟安裝最新版本的docker。
安裝好docker以後,如果你想啓動一個容器,則需要首先在本地創建鏡像文件,然後才能利用創建好的鏡像文件去啓動容器。
創建鏡像文件:
方法①:
sudo docker pull ubuntu:12.04 ——從官方倉庫註冊服務器下載標記爲12.04的鏡像文件。
有時候官方倉庫註冊服務器下載較慢,可以從其他倉庫下載。從其它倉庫下載時需要指定完整的倉庫註冊服務器地址。例如:sudo docker pull dl.dockerpool.com:5000/ubuntu:12.04。
方法②:
通過修改已有的鏡像,並利用docker commit提交更新後,再利用修改後的鏡像啓動容器。具體可以參考:http://dockerpool.com/static/books/docker_practice/image/create.html。
方法③:利用Dockerfile來創建鏡像。
具體參考http://dockerpool.com/static/books/docker_practice/image/create.html:
a、創建一個目錄和Dockerfile文件,命令如下:
mkdir sinatra
cd sinatra
touch Dockerfile
b、在vim中打開Dockerfile文件,並且按照下面的步驟編寫Dockerfile文件:
#This is a comment
FROM ubuntu:12.04
MAINTAINER Docker Newbee [email protected]
RUN apt-get –qq update
RUN gem install sinatra
注意:Dockerfile 基本的語法是
- 使用#來註釋
- FROM 指令告訴 Docker 使用哪個鏡像作爲基礎
- 接着是維護者的信息
- RUN開頭的指令會在創建中運行,比如安裝一個軟件包,在這裏使用 apt-get 來安裝了一些軟件
c、 編寫完成Dockerfile以後,可以使用docker build來生成鏡像。命令如下:
sudo docker build –t=”ouruser/sinatra:v2” .
其中,-t標記來添加tag,指定新的鏡像的用戶信息。”.”是Dockerfile所在的路徑,表示當前路徑,也可以指定其他路徑。
d、利用新創建的鏡像來啓動一個容器,運行bash:
sudo docker run –i –t ouruser/sinatra:v2 /bin/bash
此時,出現錯誤,錯誤信息是:execformat error 。百度了好長時間,終於知道原因了。原來是我安裝的docker是32位的,但是不管通過哪種方法創建的鏡像卻都是64位的,所以錯誤的原因是image不匹配造成的。
所以,如果想在32位的Docker基礎上運行Ubuntu的Image那要求Ubuntu的image也必須是32位。這就需要製作32位Ubuntu的Image。
由於Docker Hub Registry上面的鏡像都是64位的,所以這裏需要自己做一個Ubuntu的鏡像,這裏使用import命令,該命令的官方解釋爲:Create anew filesystem image from the contents of a tarball。這裏使用openVZ的模板來創建,openVZ模板的下載地址爲:http://openvz.org/Download/template/precreated ,在該頁面中有下面的Ubuntu模板可選擇:
而我們需要下載的是32位的鏡像,即圖中紅線所圈出來的版本。
下載好以後,利用如下命令創建鏡像:catubuntu-14.04-x86-minimal.tar.gz | sudo docker import – ubuntu:14.04。
創建好以後,利用docker images命令查看是否有此鏡像存在。如果存在,則可以利用此鏡像啓動一個容器了,命令爲:sudo docker run –i –t ubuntu:14.04 /bin/bash。