1. 程式人生 > 實用技巧 >容器技術(三)最小的映象【4】

容器技術(三)最小的映象【4】

(一)最小的映象

映象是 Docker 容器的基石,容器是映象的執行例項,有了映象才能啟動容器。

(1)映象的內部結構

​ 為什麼我們要討論映象的內部結構?如果只是使用映象,當然不需要了解,直接通過 docker 命令下載和執行就可以了。但如果我們想建立自己的映象,或者想理解 Docker 為什麼是輕量級的,就非常有必要學習這部分知識了。

(2)hello-word最小的映象

​ hello-world 是 Docker 官方提供的一個映象,通常用來驗證 Docker 是否安裝成功。我們先通過 docker pull 從 Docker Hub 下載它。

root@cuiyongchao:~# docker pull hello-world
Using default tag: latest
latest: Pulling from library/hello-world
0e03bdcc26d7: Already exists 
Digest: sha256:8c5aeeb6a5f3ba4883347d3747a7249f491766ca1caa47e5da5dfcf6b9b717c0
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest
root@cuiyongchao:~# 

​ 通過docker images 命令檢視映象詳細資訊:

root@cuiyongchao:~# docker images hello-world
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              bf756fb1ae65        9 months ago        13.3kB
root@cuiyongchao:~#

​ 使用docker run執行容器:

root@cuiyongchao:~# docker run  hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

​ 其實我們更關心 hello-world 映象包含哪些內容。

​ Dockerfile 是映象的描述檔案,定義瞭如何構建 Docker 映象。Dockerfile 的語法簡潔且可讀性強,後面我們會專門討論如何編寫 Dockerfile。hello-world 的 Dockerfile 內容如下:

FROM scratch
COPY hello /
CMD ["/hello"]
  • FROM scratch,此映象是從白手起家,從 0 開始構建。

  • COPY hello /,將檔案“hello”複製到映象的根目錄。

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

    映象 hello-world 中就只有一個可執行檔案 “hello”,其功能就是打印出 “Hello from Docker ......” 等資訊。 /hello 就是檔案系統的全部內容,連最基本的 /bin,/usr, /lib, /dev 都沒有。hello-world 雖然是一個完整的映象,但它並沒有什麼實際用途。通常來說,我們希望映象能提供一個基本的作業系統環境,使用者可以根據需要安裝和配置軟體。這樣的映象我們稱作 base 映象。