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/