选择项目->添加->docker 支持,这是选择 Linux,Windows的生成会有很多问题
#方式一
打开Dockerfile更改
FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base RUN apt-get update && apt-get install -y libgdiplus WORKDIR /app EXPOSE 80 EXPOSE 443 FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build WORKDIR /src COPY ./**/*.csproj ./ RUN for file in $(ls *.csproj); do mkdir -p ./${file%.*}/ && mv $file ./${file%.*}/; done RUN dotnet restore "WebSerivce/WebSerivce.csproj" COPY . . WORKDIR "/src/WebSerivce" RUN dotnet build "WebSerivce.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "WebSerivce.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "WebSerivce.dll"]
选择Dockerfile右击生成镜像
#方式二
先发布后到发布路径文件添加Dockerfile文件
Dockerfile文件内容如下,WebSerivce.dll更改为自己项目dll
# 声明使用的基础镜像 FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base # 设置工作目录 WORKDIR /app # 将本地应用拷贝到 容器 /app/ 目录下 "./"代表的就是/app 因为dockerfile文件和程序文件都在发布文件夹下 所以两个目录是一样的 COPY ./ ./ #设置环境变量,修改.netCore 默认的80端口 ENV ASPNETCORE_URLS http://+:5000 # 设置导出端口 EXPOSE 5000 # 指定应用入口点 NetCore.dll代表的是主程序文件 ENTRYPOINT ["dotnet", "WebSerivce.dll"]
生成镜像
运行cmd或Windows PowerShell 进行发布好的文件路径
打包生成镜像
docker build -t mycore . (mycore是自定义的镜像名称,镜像名称必须小写,注意命令中的最后一个点 代表的是命令从你的当前目录下执行)
打开docker查看生成的镜像
启动运行(这里的5000:5000 代表把容器内的5000端口映射到你主机的5000端口)
docker run -it -p 5000:5000 mycore
Docker - 将制作好的镜像上传到Docker Hub仓库
账号注册与登录
(1)首先在 Docker Hub 上注册一个账号:
2,修改镜像 repository
上传镜像前我们必须通过 docker tag 命令修改镜像的 repository,使之与 Docker Hub 账号匹配。
Docker Hub 为了区分不同用户的同名镜像,镜像的 registry 中要包含用户名,完整格式为:[username]/xxx:tag
3,上传镜像
(1)我们使用 docker push 命令将镜像上传到 Docker Hub:
docker push nakago/mycore:v1
上面命令执行后 Docker 便会上传镜像的每一层
4,查看、使用镜像
(1)我们登录 Docker Hub,在 Public Repository 中就可以看到上传的镜像了。
2)当然这个镜像也可以被其它 Docker host 下载使用。
docker pull nakago/mycore:v1