《Docker:入門與實戰》學習筆記(一):映像檔

環境

  • macOS

概念

Docker 映像檔(Image)類似於虛擬機器映像檔,可以將它視為一個專屬於 Docker 引擎的唯讀模板,包含了檔案系統。映像檔是建立 Docker 容器的基礎,透過版本管理和可堆疊的檔案系統,Docker 提供一套簡單的機制來建立和更新現有的映像檔,使用者可以透過簡單的命令直接使用。

安裝

  1. 官方網站下載 Docker 並安裝應用程式。
  2. 安裝後,到 Docker Cloud 註冊帳號。
  3. 啟動 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
2
docker rmi ea4c82dcd15a
Error response from daemon: conflict: unable to delete ea4c82dcd15a (must be forced) - image is referenced in multiple repositories

使用標籤刪除

刪除所有的映像檔標籤,徹底刪除映像檔。

1
2
docker rmi ubuntu:test
docker rmi ubuntu:latest

建立映像檔

建立映像檔的方式有三種:

  • 基於現有映像檔產生的容器來建立
  • 基於 Linux 容器(LXC)範例匯入
  • 基於 Dockerfile 來建立

基於現有映像檔產生的容器來建立

首先,使用 docker run 指令,啟動一個映像檔,在其中新增一個 test 檔。

1
2
3
docker run -ti ubuntu:latest /bin/bash
root@f69408067fed:/# touch test
root@f69408067fed:/# exit
  • 參數 -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
2
docker tag ubuntu:latest user/test:latest
docker push user/test:latest
  • user 為自己的使用者名稱。

參考資料

  • 楊保華、戴王劍、曹亞侖(2015)。Docker 入門與實戰。台北市:碁峯資訊。