環境
- macOS
概念
Docker 映像檔(Image)類似於虛擬機器映像檔,可以將它視為一個專屬於 Docker 引擎的唯讀模板,包含了檔案系統。映像檔是建立 Docker 容器的基礎,透過版本管理和可堆疊的檔案系統,Docker 提供一套簡單的機制來建立和更新現有的映像檔,使用者可以透過簡單的命令直接使用。
安裝
- 從官方網站下載 Docker 並安裝應用程式。
- 安裝後,到 Docker Cloud 註冊帳號。
- 啟動 Docker 並從應用程式登入。
查看版本
使用 docker --version
指令,查看 Docker 版本。
1 | docker --version |
使用終端機登入
使用 docker login
指令,從終端機登入,以下載或上傳映像檔。
1 | docker login |
- 輸入使用者名稱(而非電子郵件)。
取得映像檔
使用 docker pull
指令,下載映像檔 。
1 | docker pull ubuntu |
指定特定版本。
1 | docker pull ubuntu:14.04 |
查看映像檔資訊
使用 docker images
指令,列出本機所有的映像檔。
1 | docker images |
使用 docker inspect
指令,取得更詳細的映像檔資訊。
1 | docker inspect ea4c82dcd15a |
使用 -f
參數取得映像檔資訊的特定內容。
1 | docker inspect -f {{".Metadata"}} ubuntu:latest |
添加映像檔標籤。
使用 docker tag
指令,為映像檔添加標籤。
1 | docker tag ubuntu:latest ubuntu:test |
搜尋映像檔
使用 docker search
指令,搜尋遠端倉庫中共用的映像檔(預設為 Docker Hub 倉庫中的映像檔)。
1 | docker search mysql |
- 參數
--no-trunc=false
顯示所有完整資訊。 - 參數
--filter=is-automated=true
僅顯示自動建立的映像檔。 - 參數
--filter=stars=100
僅顯示評價為 100 顆星以上的映像檔。
刪除映像檔
使用 docker rmi
指令,刪除映像檔。
使用 ID 刪除
如果映像檔有二個以上的標籤會報錯。
1 | docker rmi ea4c82dcd15a |
使用標籤刪除
刪除所有的映像檔標籤,徹底刪除映像檔。
1 | docker rmi ubuntu:test |
建立映像檔
建立映像檔的方式有三種:
- 基於現有映像檔產生的容器來建立
- 基於 Linux 容器(LXC)範例匯入
- 基於 Dockerfile 來建立
基於現有映像檔產生的容器來建立
首先,使用 docker run
指令,啟動一個映像檔,在其中新增一個 test
檔。
1 | docker run -ti ubuntu:latest /bin/bash |
- 參數
-ti
和容器進行交互操作。 - 記住容器的 ID 為
f69408067fed
。
使用 docker commit
指令,建立一個新的映像檔,指定容器,並為倉庫命名。
1 | docker commit -m "Added a new file" -a "William Chou" f69408067fed test |
- 參數
-m
,--message=""
加入 commit 資訊。 - 參數
-a
,--author=""
加入作者資訊。 - 參數
-p
,--pause=true
當 commit 時,暫停容器運作。
於 Linux 容器(LXC)範例匯入
使用 docker import
指令,匯入 OpenVZ 的範本。
1 | docker import https://download.openvz.org/template/precreated/ubuntu-14.04-x86_64-minimal.tar.gz ubuntu:14.04 |
儲存映像檔
使用 docker save
指令,將映像檔儲存成 .tar
壓縮檔。
1 | docker save -o ubuntu_14.04.tar ubuntu:14.04 |
- 參數
-o
指定保存的壓縮檔案名稱。
載入映像檔
使用 docker load
指令,將 .tar
壓縮檔載入至映像檔。
1 | docker load -i ubuntu_14.04.tar |
- 參數
-i
表示從壓縮檔讀取。
上傳映像檔
使用 docker push
指令,將映像檔上傳到倉庫(預設為 Docker Hub 倉庫)。
1 | docker tag ubuntu:latest user/test:latest |
user
為自己的使用者名稱。
參考資料
- 楊保華、戴王劍、曹亞侖(2015)。Docker 入門與實戰。台北市:碁峯資訊。