linwebs

林林.台灣 | Linwebs - 課程

Docker容器虛擬化介紹 - Dockerfile 應用

本文章為嘉大資工讀書會第二期課程內容
場次 5-2 【雲端系統佈署】 Docker 容器虛擬化介紹

docker 可藉由讀取一個檔案來自動化的建置容器映像檔,此一檔案就是 dockerfile。

本頁目錄

 

Dockerfile

dockerfile 的檔案名稱通常為 Dockerfile

FROM

要使用的映像檔。

格式: FROM <映像檔名稱[:標籤名稱]>

使用標籤為 8.0-apachephp 映像檔。

FROM php:8.0-apache

 


RUN

要執行的指令。

格式: RUN <指令>

執行 apt-get update 指令。

RUN apt-get

 


COPY

從本機複製檔案到容器內。

格式: COPY <來源> <目的地>

複製 html 資料夾到容器內的 /var/www/html 資料夾。

COPY html /var/www/html

 


EXPOSE

宣告容器使用到的連接埠,連接埠預設使用 TCP 協定,若要使用 UDP 協定可以特別註明。

格式: EXPOSE <連接埠[/協定]>

宣告容器會使用 TCP 協定的 80 號連接埠。

EXPOSE 80/tcp

 


建立映像檔

使用 Dockerfile 建立映像檔

指令: build -t <建立的映像檔名稱/標籤> <dockerfile路徑>

此指定會使用當前目錄下的 Dockerfile ,依照 Dockerfile 的內容建立一個名稱為 linwebs,標籤為 test 的映像檔。

$ docker build -t linwebs:test .
Sending build context to Docker daemon  5.632kB
Step 1/4 : FROM php:8.0-apache
---> aa79271a3ea6
Step 2/4 : RUN apt-get update
---> Running in dfe841719813
... 略 ...
---> e7d73e900a2a
Step 3/4 : COPY html /var/www/html
---> 024d9645da3e
Step 4/4 : EXPOSE 80/tcp
---> Running in f5e95e61abb3
Removing intermediate container f5e95e61abb3
---> 7d38bb89b260
Successfully built 7d38bb89b260
Successfully tagged linwebs:test

 

使用 docker images 指令可看到此映像檔已建立。

$ docker images
REPOSITORY    TAG          IMAGE ID       CREATED          SIZE
linwebs       test         7d38bb89b260   2 minutes ago    489MB

 

使用 docker run 可使用此映像檔建立容器並執行。

$ docker run -d -p 80:80 --name smb --rm linwebs:test
6b7922175206e06b237a87dc95bfd443b508ae8d0bff4408483fafbb952c835c

 

此範例的 Dockerfile 檔案:

FROM php:8.0-apache
RUN
apt-get update
COPY html /var/www/html
EXPOSE 80/tcp

 

此範例目錄下的檔案

$ ls
Dockerfile  html

$ ls html
index.php

$ cat html/index.php

 


參考資料: Docker 官方文件 - Dockerfile referenceDocker — 從入門到實踐

建立時間:2021/8/27 AM 1:47
修改時間:2021/9/1 PM 5:16
作者: Linwebs

bookmark標籤