Dockerfile 是用于自動化構(gòu)建 Docker 鏡像的腳本文件僧鲁,包含一系列指令和參數(shù)厕诡,用于描述鏡像的構(gòu)建與配置過程温艇。
以下是常用的 Dockerfile 關(guān)鍵字及其詳細(xì)教程:
FROM
FROM:指定基礎(chǔ)鏡像
語法:FROM <image>[:<tag>] [AS <name>]
示例:FROM ubuntu:20.04
說明:image 表示基礎(chǔ)鏡像名稱肠虽,tag 表示標(biāo)簽醉者,默認(rèn)為 latest刽辙,AS 用于定義別名 name窥岩,可以在后續(xù)指令中使用。
MAINTAINER
注意:從 Docker 1.13 開始宰缤,推薦使用 LABEL 指令代替 MAINTAINER颂翼。
語法:MAINTAINER <author name>
示例:MAINTAINER John Doe
說明:指定作者信息。
RUN
RUN:在鏡像中執(zhí)行命令
語法:RUN <command>
示例:RUN apt-get update && apt-get install -y curl
說明:在鏡像中執(zhí)行指定命令慨灭,如安裝軟件等朦乏。
CMD
CMD:指定容器啟動時要運(yùn)行的命令
語法:CMD <command> [arg1] [arg2] ...
示例:CMD ["nginx", "-g", "daemon off;"]
說明:定義容器啟動后要執(zhí)行的命令。如果 Dockerfile 中有多個 CMD 指令氧骤,只有最后一個會生效呻疹。
EXPOSE
EXPOSE:聲明鏡像需要監(jiān)聽的端口
語法:EXPOSE <port> [<port>/<protocol>] ...
示例:EXPOSE 80
說明:聲明容器在運(yùn)行時需要監(jiān)聽的端口。
ENV
ENV:設(shè)置環(huán)境變量
語法:ENV <key> <value>
示例:ENV NGINX_VERSION 1.21.0
說明:設(shè)置環(huán)境變量筹陵,可以在后續(xù)指令和命令中使用刽锤。
ADD
ADD:將本地文件或目錄復(fù)制到鏡像中
語法:ADD <src> <dest>
示例:ADD nginx.conf /etc/nginx/
說明:將指定的本地文件或目錄復(fù)制到鏡像中。如果 <src> 是一個 URL朦佩,Docker 會嘗試下載該 URL并思。
COPY
COPY:將本地文件或目錄復(fù)制到鏡像中
語法:COPY <src> <dest>
示例:COPY nginx.conf /etc/nginx/
說明:將指定的本地文件或目錄復(fù)制到鏡像中。
ENTRYPOINT
ENTRYPOINT:配置容器啟動命令
語法:ENTRYPOINT []
示例:ENTRYPOINT ["echo", "Hello world!"]
說明:設(shè)定容器的默認(rèn)啟動命令语稠,也可以搭配 CMD 指定容器啟動的默認(rèn)參數(shù)宋彼。
WORKDIR
WORKDIR:設(shè)置工作目錄
語法:WORKDIR /path/to/workdir
示例:WORKDIR /root
說明:設(shè)置一個工作目錄,下面的 CMD、RUN宙暇、ENTRYPOINT 等指令的執(zhí)行路徑都會在該目錄下進(jìn)行输枯。
VOLUME
VOLUME:聲明持久化目錄
語法:VOLUME /path/to/volume
示例:VOLUME /data
說明:聲明掛載到容器中的目錄,可以用來存儲數(shù)據(jù)等占贫。
USER
USER:指定運(yùn)行容器時的用戶名或 UID
語法:USER <user>[:<group>]
示例:USER nginx
說明:指定運(yùn)行容器時的用戶名或 UID桃熄,也可以指定組名。如果只指定用戶型奥,Docker 會自動為該用戶創(chuàng)建一個與用戶名相同的主組瞳收。
LABEL
LABEL:設(shè)置元數(shù)據(jù)
語法:LABEL <key>=<value>
示例:LABEL version="1.0"
說明:設(shè)置 Docker 鏡像的元數(shù)據(jù),如版本厢汹、描述螟深、維護(hù)者等信息。
以上是 Dockerfile 常用的關(guān)鍵字及其詳細(xì)教程烫葬,希望對您有所幫助界弧。