文章出處

鏡像是 Docker 容器的基石,容器是鏡像的運行實例,有了鏡像才能啟動容器。

本章內容安排如下:

  1. 首先通過研究幾個典型的鏡像,分析鏡像的內部結構。

  2. 然后學習如何構建自己的鏡像。

  3. 最后介紹怎樣管理和分發鏡像。

鏡像的內部結構

為什么我們要討論鏡像的內部結構?

如果只是使用鏡像,當然不需要了解,直接通過 docker 命令下載和運行就可以了。

但如果我們想創建自己的鏡像,或者想理解 Docker 為什么是輕量級的,就非常有必要學習這部分知識了。

我們從一個最小的鏡像開始吧。

hello-world - 最小的鏡像

hello-world 是 Docker 官方提供的一個鏡像,通常用來驗證 Docker 是否安裝成功。

我們先通過 docker pull 從 Docker Hub 下載它。

 

用 docker images 命令查看鏡像的信息。

hello-world 鏡像竟然還不到 2KB!

通過 docker run 運行。

50.png

其實我們更關心 hello-world 鏡像包含哪些內容。

Dockerfile 是鏡像的描述文件,定義了如何構建 Docker 鏡像。Dockerfile 的語法簡潔且可讀性強,后面我們會專門討論如何編寫 Dockerfile。

hello-world 的 Dockerfile 內容如下:

只有短短三條指令。

  1. FROM scratch
    此鏡像是從白手起家,從 0 開始構建。

  2. COPY hello /
    將文件“hello”復制到鏡像的根目錄。

  3. CMD ["/hello"]
    容器啟動時,執行 /hello

鏡像 hello-world 中就只有一個可執行文件 “hello”,其功能就是打印出 “Hello from Docker ......” 等信息。

/hello 就是文件系統的全部內容,連最基本的 /bin,/usr, /lib, /dev 都沒有。

hello-world 雖然是一個完整的鏡像,但它并沒有什么實際用途。通常來說,我們希望鏡像能提供一個基本的操作系統環境,用戶可以根據需要安裝和配置軟件。這樣的鏡像我們稱作 base 鏡像。

我們下一節討論 base 鏡像。


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()