Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

1、FROM 指定基础镜像构建

FROM 镜像

2、COPY 复制命令。从上下文目录中复制文件或者目录到容器里指定路径。

写法:

COPY 源路径,目标路径

COPY ["源路径","目标路径"]

3、RUN运行指令。构建的时候运行的指令

主要在于镜像构建的时候运行,运行build命令的时候

后面接的命令就是shell输入的命令

写法

RUN shell命令 参数1 参数2

RUN ["shell命令 ","参数1"," 参数2"]

例如:

RUN ["echo",">"," /usr/share/index.html"]

4、CMD运行指令。运行容器时候运行的指令

主要在于镜像运行容器的时候生成,运行run的时候运行

写法

CMD <shell 命令>
CMD ["<可执行文件或命令>","<param1>","<param2>",...]

例如:

CMD ["dotnet","rmcore.dll"]

缺点:在run 命令后面可以进行覆盖

docker run -d -P rmcore dotnet rmcore.dll 进行覆盖掉

5、ENTRYPOINT运行指令。运行容器时候运行的指令(不会被覆盖)

写法

ENTRYPOINT ["<executeable>","<param1>","<param2>",...]

可以和CMD动态结合,设置动态的配置参数

例如

ENTRYPOINT ["nginx", "-c"] 定参

CMD ["/etc/nginx/nginx.conf"]变参

6、EXPOSE暴露端口指令

仅仅声明端口,就是指定镜像暴露的端口

在run 的时候,通过docker run -p 会自动随机映射到EXPOSE端口

写法

EXPOSE 端口

EXPOSE 端口

例如

EXPOSE 5000

EXPOSE 5001

7、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"]

  

 

官方文档介绍:https://docs.docker.com/engine/reference/builder/