天天看點

(03)docker鏡像建立與基本使用docker鏡像建立與基本使用

docker鏡像建立與基本使用

2017年07月21日 18:32:57 像風一樣的自由 閱讀數:28060

檢視鏡像

在docker環境安裝完成之後,對docker的使用主要集中在docker鏡像的管理與使用。首先是docker鏡像的管理,檢視本地有哪些鏡像可以使用指令:

docker images
           

運作鏡像

檢視到本地有哪些鏡像後,就可以來運作已有的鏡像了,使用指令:

docker run -t -i ubuntu:15.10 /bin/bash
           

如果該鏡像不存在,會自動嘗試下載下傳對應的鏡像,隻要遠端鏡像庫中有同名的鏡像。遠端鏡像庫預設位址為:https://hub.docker.com/。

搜尋/下載下傳鏡像

當然我們也可以主動的先把鏡像下載下傳到本地,再運作。而下載下傳之前還可以進行下搜尋,指令如下:

docker search selenium/hub
           

搜尋之後如果有鏡像存在,就可以拉取鏡像了。指令如下:

docker pull selenium/hub
           

最後運作鏡像:

docker run -it selenium/hub
           

建立鏡像

我們從鏡像倉庫下載下傳的,都是别人事先做好的。如果我們需要一個定制的鏡像,就必須得自己動手了。自己建立一個鏡像有2種方式:

  1. 基于一個現有的鏡像來修改
  2. 基于dockerfile來建立

鏡像修改

鏡像修改的方式是先運作一個現有的鏡像,然後在運作的容器中進行軟體的更新操作。比如:安裝軟體、服務之類。

>docker run -t -i ubuntu:15.10 /bin/bash
[email protected]:/# apt-get update
root@e218edb10161:/# apt-get install wget
[email protected]:/# exit
           

在完成軟體安裝/更新/更新之後,需要對該鏡像進行送出操作,即做一個儲存操作。

docker commit -m="with wget" -a="five3" e218edb10161 five3/ubuntu:v2
           

-m:送出的描述資訊

-a:指定鏡像作者

e218edb10161:容器ID,在容器執行時可以在指令行開頭檢視。比如:[email protected]中@之後的内容。此外還可以通過docker ps來檢視

five3/ubuntu:v2:指定要建立的目标鏡像名

接着,我們就可以使用新定制的鏡像了。

docker run -t -i five3/ubuntu:v2 /bin/bash  
           

目前為止,你儲存的新鏡像還隻是在本地。如果你希望把它更新到docker倉庫,可以使用如下指令:

docker push five3/ubuntu:v2
           

使用上述指令的前提是你已經在https://hub.docker.com/上注冊了賬戶

dockerfile

使用dockerfile的方式其實是相當于從零開始建立一個新的鏡像,具體步驟是先寫好一個dockerfile檔案。然後使用docker build指令來建構鏡像,建構時會從網上下載下傳及更新基礎鏡像與相關軟體。

通常一個dockerfile的檔案格式如下:

FROM    centos:6.7
MAINTAINER      Macy "[email protected]"


RUN     /bin/echo 'root:123456' |chpasswd
RUN     useradd five3
RUN     /bin/echo 'five3:123456' |chpasswd
RUN     /bin/echo -e "en_US.UTF-8\"" >/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D
           

它與shell腳本類似,是一個批處理的過程,但是它具有自己的指令和文法。dockerfile的指令都是大寫的,比如:FROM、RUN等。從上面的dockerfile我們可以大概知道,建構的新鏡像都做了什麼。

首先,它是基于centos6.7版本來建構的【所有的docker鏡像都是基于一個linux系統來的,因為首先它得具備一個完整的運作生态,當然也可以是一個非常精簡的linux系統,比如:boot2docker】

其次,它的維護者是Macy,郵箱:[email protected]

然後,在基礎的centos之上,會運作幾條RUN後面的指令。包括修改root密碼,添加一個five3使用者,設定系統的預設編碼為utf-8

接着,通過EXPOSE指令對外開發了22和80端口。即ssh端口與WEB端口

最後,CMD指令用于設定鏡像運作後的啟動指令。這裡是預設會啟動ssh服務。這樣當鏡像運作之後我們就可以通過ssh連接配接該容器了

這裡需要注意的是,22、80是容器内部的軟體端口,雖然對外部開放了,但是外部需要有一個端口映射;在容器之外要連接配接這2個端口需要連接配接外部的映射端口。關于檢視外部映射端口可以使用如下指令:

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 :指定要建立的目标鏡像名,注意名稱隻能是小寫字母

建構完成之後,可以通過docker images來檢視鏡像檔案,還可以直接運作該鏡像:

docker run -t -i five3/centos:6.7  /bin/bash
           

啟動後通過id指令來檢查使用者five3是否建立成功

id five3
           

繼續閱讀