1. 程式人生 > >3-3.5 建立映象

3-3.5 建立映象

建立映象的三種方式:基於已有映象的容器建立、基於本地模板匯入、基於Dockerfile建立。第三種基於Dockerfile建立映象的方式會在後續章節深入講解

    1.使用commit 方式建立

    思路:先獲取一個映象,進入容器中對容器進行修改,之後提交該容器,生成一個新映象。

    映象是多層儲存,每一層是在前一層的基礎上進行的修改;而容器同樣也是多層儲存,是在以映象為基礎層,在其基礎上加一層作為
容器執行時的儲存層。測試樣例:

docker run --name webserver -d -p 80:80 nginx

這條命令會用 nginx 映象啟動一個容器,命名為 webserver ,並且映射了 80 埠,這樣我們可以用瀏覽器去訪問這個 nginx 伺服器。

如果是雲主機,則訪問公網IP;若是Docker for Mac、Docker for Windows,那麼可以直接訪問:http://localhost。如圖:

進入容器,對其進行修改:

$ docker exec -it webserver bash

[email protected]:/#    echo    '<h1>Hello,   Docker!</h1>' >    /usr/share/nginx/html/index.html

[email protected]:/#    exit

exit

我們以互動式終端方式進入webserver 容器,並執行了 bash 命令,也就是獲得一個可操作的Shell。並修改了 /usr/share/nginx/html/index.html。

重新整理瀏覽器:

至此,我們修改了容器的檔案,也就是改動了容器的儲存層。我們可以通過 docker diff 命令看到具體的改動。

$   docker  diff    webserver

    提交容器,將其儲存為映象:docker commit ,其語法格式為:

docker commit [選項] <容器ID或容器名> [<倉庫名>[:<標籤>]]

主要選項:

  • -a, --author="" 坐著資訊
  • -m, --message="" 提交資訊
  • -p, --pause=true 提交時暫停容器執行  

$   docker  commit  \

   --author  "yuor name <your email>"    \

   --message  "修改了預設網頁" \

   webserver   \

   nginx:v2

檢視生成的映象:

docker images

    2. 使用Dockerfile製作映象

 nginx 映象為例。

在一個空白目錄中,建立一個文字檔案,並命名為 Dockerfile :

mkdir mynginx

cd  mynginx

touch  Dockerfile

其內容為:

FROM nginx

RUN echo '<h1>Hello, Docker!</h1>' /usr/share/nginx/html/index.html

這個 Dockerfile 很簡單,一共就兩行。涉及到了兩條指令, FROM 和 RUN 。

在 Dockerfile 檔案所在目錄執行:

$ docker build -t nginx:v3 .

(末尾的“.”保留)

     3. 基於本地模板匯入

格式:

docker import [選項] <檔案>|<URL>|- [<倉庫名>[:<標籤>]]

壓縮包可以是本地檔案、遠端 Web 檔案,甚至是從標準輸入中得到。壓縮包將會在映象 / 目錄展開,並直接作為映象第一層提交。

比如建立一個 OpenVZ 的 Ubuntu 14.04 模板的映象:

$ docker import \

http://download.openvz.org/template/precreated/ubuntu-14.04-x86_64-minimal.tar.gz \

openvz/ubuntu:14.04

對應 docker import 有一個 docker export ,這個命令用於匯出容器的檔案系統到壓縮檔案中,用法:

docker export [OPTIONS] CONTAINER ,匯出的檔案位置在當前執行命令的目錄下,這裡不多做介紹。