查看鏡像
在docker環(huán)境安裝完成之后,對docker的使用主要集中在docker鏡像的管理與使用。首先是docker鏡像的管理,查看本地有哪些鏡像可以使用命令:
docker images
運(yùn)行鏡像
查看到本地有哪些鏡像后,就可以來運(yùn)行已有的鏡像了,使用命令:
docker run -t -i ubuntu:15.10 /bin/bash
如果該鏡像不存在,會自動嘗試下載對應(yīng)的鏡像,只要遠(yuǎn)程鏡像庫中有同名的鏡像。遠(yuǎn)程鏡像庫默認(rèn)地址為:https://hub./。
搜索/下載鏡像
當(dāng)然我們也可以主動的先把鏡像下載到本地,再運(yùn)行。而下載之前還可以進(jìn)行下搜索,命令如下:
docker search selenium/hub
搜索之后如果有鏡像存在,就可以拉取鏡像了。命令如下:
docker pull selenium/hub
最后運(yùn)行鏡像:
docker run -it selenium/hub
創(chuàng)建鏡像
我們從鏡像倉庫下載的,都是別人事先做好的。如果我們需要一個定制的鏡像,就必須得自己動手了。自己創(chuàng)建一個鏡像有2種方式:
- 基于一個現(xiàn)有的鏡像來修改
- 基于dockerfile來創(chuàng)建
鏡像修改
鏡像修改的方式是先運(yùn)行一個現(xiàn)有的鏡像,然后在運(yùn)行的容器中進(jìn)行軟件的更新操作。比如:安裝軟件、服務(wù)之類。
>docker run -t -i ubuntu:15.10 /bin/bash root@e218edb10161:/# apt-get update root@e218edb10161:/# apt-get install wget root@e218edb10161:/# exit
在完成軟件安裝/更新/升級之后,需要對該鏡像進(jìn)行提交操作,即做一個保存操作。
docker commit -m="with wget" -a="five3" e218edb10161 five3/ubuntu:v2 -m:提交的描述信息
-a:指定鏡像作者
e218edb10161:容器ID,在容器執(zhí)行時可以在命令行開頭查看。比如:root@e218edb10161中@之后的內(nèi)容。此外還可以通過docker ps來查看
five3/ubuntu:v2:指定要創(chuàng)建的目標(biāo)鏡像名
接著,我們就可以使用新定制的鏡像了。
docker run -t -i five3/ubuntu:v2 /bin/bash
目前為止,你保存的新鏡像還只是在本地。如果你希望把它更新到docker倉庫,可以使用如下命令:
docker push five3/ubuntu:v2 使用上述命令的前提是你已經(jīng)在https://hub./上注冊了賬戶
dockerfile
使用dockerfile的方式其實(shí)是相當(dāng)于從零開始創(chuàng)建一個新的鏡像,具體步驟是先寫好一個dockerfile文件。然后使用docker build命令來構(gòu)建鏡像,構(gòu)建時會從網(wǎng)上下載及更新基礎(chǔ)鏡像與相關(guān)軟件。
通常一個dockerfile的文件格式如下:
MAINTAINER Macy "five3@163.com" RUN /bin/echo 'root:123456' |chpasswd RUN /bin/echo 'five3:123456' |chpasswd RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
它與shell腳本類似,是一個批處理的過程,但是它具有自己的命令和語法。dockerfile的命令都是大寫的,比如:FROM、RUN等。從上面的dockerfile我們可以大概知道,構(gòu)建的新鏡像都做了什么。
首先,它是基于centos6.7版本來構(gòu)建的【所有的docker鏡像都是基于一個linux系統(tǒng)來的,因?yàn)槭紫人镁邆湟粋€完整的運(yùn)行生態(tài),當(dāng)然也可以是一個非常精簡的linux系統(tǒng),比如:boot2docker】
其次,它的維護(hù)者是Macy,郵箱:five3@163.com
然后,在基礎(chǔ)的centos之上,會運(yùn)行幾條RUN后面的命令。包括修改root密碼,添加一個five3用戶,設(shè)置系統(tǒng)的默認(rèn)編碼為utf-8
接著,通過EXPOSE命令對外開發(fā)了22和80端口。即ssh端口與WEB端口
最后,CMD命令用于設(shè)置鏡像運(yùn)行后的啟動命令。這里是默認(rèn)會啟動ssh服務(wù)。這樣當(dāng)鏡像運(yùn)行之后我們就可以通過ssh連接該容器了
這里需要注意的是,22、80是容器內(nèi)部的軟件端口,雖然對外部開放了,但是外部需要有一個端口映射;在容器之外要連接這2個端口需要連接外部的映射端口。關(guān)于查看外部映射端口可以使用如下命令:
docker port <container ID|container Name> 22 docker port <container ID|container Name> 80
在dockerfile完成之后,我們就可以build自定義的鏡像了。具體命令如下:
docker build -t five3/centos:6.7 /path/to/dockerfile -t :指定要創(chuàng)建的目標(biāo)鏡像名,注意名稱只能是小寫字母
構(gòu)建完成之后,可以通過docker images來查看鏡像文件,還可以直接運(yùn)行該鏡像:
docker run -t -i five3/centos:6.7 /bin/bash 啟動后通過id命令來檢查用戶five3是否創(chuàng)建成功
id five3
|