環境
- 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 入門與實戰。台北市:碁峯資訊。