千鋒Linux雲計算教程全套視頻合集:Dockerfile詳解(二)

在本章節中將和大家講解:Dockerfile的第二部分:

千鋒Linux雲計算教程全套視頻合集:Dockerfile詳解(二)

Dockerfile

FROM 指令

主要作用是指定一個鏡像作為構建自定義鏡像的基礎鏡像,在這個基礎鏡像之上進行修改定製。

這個指令是 Dockerfile 中的必備指令,同時也必須是第一條指令。

在 Docker Store 上有很多高質量的官方鏡像,可以直接作為我們的基礎鏡像。

作為服務類的,如 Nginx Mongo 等

用於開發的, 如 Python golang

操作系統類, 如 Centos ubuntu

除了一些現有的鏡像,Docker 還有一個特殊的鏡像 scratch

這個鏡像是虛擬的,表示空白鏡像

FORM scratch

這以為著這將不以任何鏡像為基礎鏡像。

可以把可執行的二進制文件複製到鏡像中直接執行,容器本身就是和宿主機共享 Linux內核的。

使用 Go 語言開發的應用很多會使用這種方式來製作鏡像,這也是為什麼有人認為 Go 是特別適合容器微服務架構的語言的原因之一。

千鋒Linux雲計算教程全套視頻合集:Dockerfile詳解(二)

插個小消息,也方便想學習的同學,在文章下方留言即可試聽課程外加領取千鋒HTML5、UI交互設計、PHP、Java+雲數據、大數據開發、VR/AR/Unity遊戲開發、Python人工智能、Linux雲計算、全棧軟件測試、網絡安全等全部的視頻學習教程。

製作自己的 Hello world

  1. 在任意一臺 Linux 機器上,安裝 gcc
  2. 查看有沒有安裝

[root@localhost hello_qf]# rpm -qa gcc glibc-static

glibc-static-2.17-222.el7.x86_64

gcc-4.8.5-11.el7.x86_64

沒有的話,進行安裝即可

[root@localhost hello_qf]# yum install gcc glibc-static

  1. 編輯 C 源代碼文件

[root@localhost docker]# cat hello.c

#include <stdio.h>

int main()

{

printf("Hello, Yangge! \\n");

return 0;

}

  1. 將源代碼文件編譯為可執行的二進制文件

[root@localhost hello_qf]# gcc --static hello.c -o hello

編譯好後,測試一下

[root@localhost hello_qf]# ls

hello hello.c

# hello 是我們編譯好的二進制文件

# hello.c 是 C 的源碼文件

[root@localhost hello_qf]# ./hello

Hello Yangge # 輸出結果,說明編譯成功

千鋒Linux雲計算教程全套視頻合集:Dockerfile詳解(二)

  1. 編輯 Dockerfile

在有 hello 二進制的文件目錄下,編譯 Dockerfile 文件,內容如下:

[root@localhost hello_qf]# ls

Dockerfile hello hello.c

[root@localhost hello_qf]# cat Dockerfile

FROM scratch

ADD hello /

CMD ["/hello"]


  • ADD 是把當前目錄下的 hello 文檔拷貝到 容器中的根目錄下
  • CMD 執行根目錄下的 hello 文件
  • 構建新的鏡像


分享到:


相關文章: