docker 可藉由讀取一個檔案來自動化的建置容器映像檔,此一檔案就是 dockerfile。
本頁目錄
dockerfile 的檔案名稱通常為 Dockerfile
。
要使用的映像檔。
格式: FROM <映像檔名稱[:標籤名稱]>
使用標籤為 8.0-apache
的 php
映像檔。
FROM php:8.0-apache
要執行的指令。
格式: RUN <指令>
執行 apt-get update
指令。
RUN apt-get
從本機複製檔案到容器內。
格式: COPY <來源> <目的地>
複製 html
資料夾到容器內的 /var/www/html
資料夾。
COPY html /var/www/html
宣告容器使用到的連接埠,連接埠預設使用 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