代码改变世界

Dockerfile 命令

2020-03-25 09:54  Tony、  阅读(212)  评论(0编辑  收藏  举报

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/