Dockerfile 是一個用來構建鏡像的文本文件,文本內容包含了一條條構建鏡像所需的指令和說明。html
一、FROM 指定基礎鏡像構建nginx
FROM 鏡像docker
二、COPY 複製命令。從上下文目錄中複製文件或者目錄到容器裏指定路徑。shell
寫法:bash
COPY 源路徑,目標路徑app
COPY ["源路徑","目標路徑"]ui
三、RUN運行指令。構建的時候運行的指令rest
主要在於鏡像構建的時候運行,運行build命令的時候code
後面接的命令就是shell輸入的命令htm
寫法
RUN shell命令 參數1 參數2
RUN ["shell命令 ","參數1"," 參數2"]
例如:
RUN ["echo",">"," /usr/share/index.html"]
四、CMD運行指令。運行容器時候運行的指令
主要在於鏡像運行容器的時候生成,運行run的時候運行
寫法
CMD <shell 命令>
CMD ["<可執行文件或命令>","<param1>","<param2>",...]
例如:
CMD ["dotnet","rmcore.dll"]
缺點:在run 命令後面能夠進行覆蓋
docker run -d -P rmcore dotnet rmcore.dll 進行覆蓋掉
五、ENTRYPOINT運行指令。運行容器時候運行的指令(不會被覆蓋)
寫法
ENTRYPOINT ["<executeable>","<param1>","<param2>",...]
能夠和CMD動態結合,設置動態的配置參數
例如
ENTRYPOINT ["nginx", "-c"] 定參
CMD ["/etc/nginx/nginx.conf"]變參
六、EXPOSE暴露端口指令
僅僅聲明端口,就是指定鏡像暴露的端口
在run 的時候,經過docker run -p 會自動隨機映射到EXPOSE端口
寫法
EXPOSE 端口
EXPOSE 端口
例如
EXPOSE 5000
EXPOSE 5001
七、WORKDIR工做目錄指令
用於應用在容器內的工做目錄,就比如:ruanmou目錄
寫法
WORKDIR <工做目錄路徑>
例如
WORKDIR /rmcore
或者
WORKDIR /nginx
8 netcore鏡像構造
FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base WORKDIR /app EXPOSE 80 FROM microsoft/dotnet:2.2-sdk AS build WORKDIR /src COPY docker/docker.csproj docker/ RUN dotnet restore docker/docker.csproj COPY . . WORKDIR /src/docker RUN dotnet build docker.csproj -c Release -o /app FROM build AS publish RUN dotnet publish docker.csproj -c Release -o /app FROM base AS final WORKDIR /app COPY --from=publish /app . ENTRYPOINT ["dotnet", "docker.dll"]