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