1. 程式人生 > >Docker--Dockerfile引用及指令集的功能用法

Docker--Dockerfile引用及指令集的功能用法

使用 令行 top work 保存 指令集 ram 用法 入口

Dockerfile引用的官網文檔:https://docs.docker.com/engine/reference/builder/編寫Dockerfiles的最佳實踐的官網文檔:https://docs.docker.com/develop/develop-images/dockerfile_best-practices/Docker可以通過閱讀來自的指令自動構建圖像 DockerfileDockerfile是一個文本文檔,其中包含用戶可以在命令行上調用以組合圖像的所有命令。使用docker build 用戶可以創建一個連續執行多個命令行指令的自動構建。用法docker build命令Dockerfile根據
上下文構建圖像。構建的上下文是指定位置PATH或的文件集URL。這PATH是本地文件系統上的目錄。這URL是一個Git存儲庫位置。遞歸處理上下文。因此,a PATH包括所有子目錄,URL包括存儲庫及其子模塊。此示例顯示使用當前目錄作為上下文的構建命令:例如:docker build -f ./Dockerfile -t microsoft/dotnet:v1 .(別忘記了後面有個點,詳細了解docker build用法)構建由Docker守護程序運行,而不是由CLI運行。構建過程所做的第一件事是將整個上下文(遞歸地)發送到守護進程。在大多數情況下,最好以空目錄作為上下文,並將Dockerfile保存在該目錄中。僅添加構建Dockerfile所需的文件。
警告:不要用你的根目錄下,/作為PATH因為它會導致生成到您的硬盤驅動器的全部內容傳輸到碼頭工人守護進程。要在構建上下文中使用文件,請Dockerfile引用指令中指定的文件,例如COPY指令。要提高構建的性能,請通過向.dockerignore上下文目錄添加文件來排除文件和目錄。有關如何創建.dockerignore 文件的信息,請參閱此頁面上的文檔。傳統上,它Dockerfile被調用Dockerfile並位於上下文的根中。您可以使用-f標誌docker build來指向文件系統中任何位置的Dockerfile。附菜鳥教程對docker build命令參數的用法http://www.runoob.com/docker/docker-build-command.html
技術分享圖片技術分享圖片指令集的功能用法Dockerfile有十幾條命令可用於構建鏡像Dockerfile從FROM命令開始,緊接著跟隨者各種方法,命令和參數。其產出為一個新的可以用於創建容器的鏡像。
指令說明
FROM指定所創建鏡像的基礎鏡像,FROM指令必須指定且需要寫在其他指令之前.如果本地鏡像不存在,會去Docker Hub下載指定鏡像,Dockerfile創建多個鏡像使用多條FROM語句.支持三種格式:FROM <image> FROM <image>:<tag> FROM <image>@<digest>示例:FROM microsoft/dotnet:2.2-aspnetcore-runtime
RUN執行命令, 是啟動容器時才指定運行的指令RUN有兩種形式:1.RUN <command>shell表單,該命令在shell中運行,默認情況下/bin/sh -cLinuxcmd /S /CWindows 上運行)2.RUN ["executable", "param1", "param2"](執行形式)示例:RUN echo "hello world"
CMD指定啟動容器默認執行的命令每個Dodckerfile 只能有一條CMD命令,如果指定了多條命令,只有最後一條會被執行CMD有三種形式:CMD ["executable","param1","param2"](執行形式,這是首選形式)CMD ["param1","param2"](作為ENTRYPOINT的默認參數)CMD command param1 param2(在Shell中使用)示例: CMD [ "dotnet","XXX.dll" ]
LABEL指定生成鏡像的元數據標簽信息格式: LABEL <KEY>=<VALUE>示例: LABEL version=”1.0”
MAINTAINER指定維護者信息(已過時),格式為MAINTAINER name建議使用LABEL代替,例如:LABEL maintainer=”[email protected]
EXPOSE聲明鏡像內服務所監聽的端口示例:EXPOSE 80
ENV指定環境變量,環境變量可以在後續RUN指令中使用格式: ENV <key> <value>示例: ENV JAVA_HOME /path/to/java
ADDADD指令用於復制文件,復制指定的<src> 路徑下的內容到容器中的<dest>路徑下,<src>可以為URL;如果為tar文件,會自動解壓到<dest>路徑下格式: ADD <src>... <dest>
COPY復制本地主機的<src>路徑下的內容到鏡像中的<dest>路徑下;COPY指令和ADD指令類似,COPY不支持URL和壓縮包一般情況下推薦使用COPY,而不是ADD格式: COPY <src>... <dest>示例:COPY nginx.conf /etc/nginx/nginx.conf
ENTRYPOINT指定鏡像的默認入口ENTRYPOINTCMD指令的目的一樣,都是指定Docker容器啟動時執行的命令,可多次設置,但只有最後一個有效格式: ENTRYPOINT ["executable", "param1", "param2"]
WORKDIRWORKDIR指令可以在創建容器時在容器內部指定一個工作目錄例如: WORKDIR /data
Dockerfile示例;FROM microsoft/dotnet:2.2-aspnetcore-runtimeLABEL version = "1.0"RUN mkdir /dataCOPY ./ /dataWORKDIR /dataEXPOSE 80CMD [ "dotnet","Docker.dll" ]

Docker--Dockerfile引用及指令集的功能用法