3-3.5 建立映象
建立映象的三種方式:基於已有映象的容器建立、基於本地模板匯入、基於Dockerfile建立。第三種基於Dockerfile建立映象的方式會在後續章節深入講解
1.使用commit 方式建立
思路:先獲取一個映象,進入容器中對容器進行修改,之後提交該容器,生成一個新映象。
映象是多層儲存,每一層是在前一層的基礎上進行的修改;而容器同樣也是多層儲存,是在以映象為基礎層,在其基礎上加一層作為
容器執行時的儲存層。測試樣例:
|
這條命令會用 nginx 映象啟動一個容器,命名為 webserver ,並且映射了 80 埠,這樣我們可以用瀏覽器去訪問這個 nginx 伺服器。
如果是雲主機,則訪問公網IP;若是Docker for Mac、Docker for Windows,那麼可以直接訪問:http://localhost。如圖:
進入容器,對其進行修改:
|
我們以互動式終端方式進入webserver 容器,並執行了 bash 命令,也就是獲得一個可操作的Shell。並修改了 /usr/share/nginx/html/index.html。
重新整理瀏覽器:
至此,我們修改了容器的檔案,也就是改動了容器的儲存層。我們可以通過 docker diff 命令看到具體的改動。
|
提交容器,將其儲存為映象:docker commit ,其語法格式為:
|
主要選項:
- -a, --author="" 坐著資訊
- -m, --message="" 提交資訊
- -p, --pause=true 提交時暫停容器執行
|
檢視生成的映象:
|
2. 使用Dockerfile製作映象
以 nginx 映象為例。
在一個空白目錄中,建立一個文字檔案,並命名為 Dockerfile :
|
其內容為:
|
這個 Dockerfile 很簡單,一共就兩行。涉及到了兩條指令, FROM 和 RUN 。
在 Dockerfile 檔案所在目錄執行:
|
(末尾的“.”保留)
3. 基於本地模板匯入
格式:
|
壓縮包可以是本地檔案、遠端 Web 檔案,甚至是從標準輸入中得到。壓縮包將會在映象 / 目錄展開,並直接作為映象第一層提交。
比如建立一個 OpenVZ 的 Ubuntu 14.04 模板的映象:
|
對應 docker import 有一個 docker export ,這個命令用於匯出容器的檔案系統到壓縮檔案中,用法:
docker export [OPTIONS] CONTAINER ,匯出的檔案位置在當前執行命令的目錄下,這裡不多做介紹。