Docker是一个用于开发,发布和运行应用程序的开放平台。Docker使您可以将应用程序与基础架构分开,从而能够快速交付软件。借助Docker,您能够以与管理应用程序相同的方式来管理基础架构。经过利用Docker的方法来快速交付,测试和部署代码,您能够大大减小编写代码和在生产环境中运行代码之间的延迟。linux
通常咱们写程序,会有开发环境,测试环境,生产环境,不少bug都是环境问题。web
过去部署的思路,在开发环境打包,想跑到Window环境下运行。咱们得先在Window下载好.NET Framework,IIS等,配置好对应的环境变量,将包丢到iis的webapps文件夹下,才能跑起来。docker
如今Docker的思路,能够将咱们的想要的环境构建成一个镜像,而后咱们能够推送到网上去。想要用这个环境的时候,在网上拉取一份就行了。ubuntu
你们必定遇到过在多个应用部署在同一台服务器上,有一个应用出现了问题,致使CPU占100%,其余应用也都受到影响。还有就是好比有些应用用NET技术,有些应用用Php技术,这些不一样应用各类的依赖软件都安装在同一个服务器上,可能就会形成各类冲突/没法兼容。windows
对于虚拟机,主机服务器从下至上有三个基础层:基础架构,主机操做系统和虚拟机监控程序,最重要的是每一个虚拟机都有本身的操做系统和全部必要的库。对于Docker,主机服务器仅具备基础结构和操做系统,最重要的是容器引擎,该容器引擎使容器保持隔离状态,但共享基本的OS服务。centos
由于容器须要的资源要少得多(例如,它们不须要完整的操做系统),因此它们易于部署而且启动迅速。这样能够提升密度,这意味着能够在同一硬件单元上运行更多服务,从而下降成本。api
做为在同一内核上运行的反作用,与VM相比,您得到的隔离更少。浏览器
首先,安装Docker ,参考官方文档。服务器
而后,建立Docker.WebApi01项目架构
确保已选择“启用 Docker 支持”复选框,选择所需的容器类型(Windows 或 Linux)。
接着,咱们打开Dockerfile文件, 请参阅Dockerfile引用,了解其中的命令:
FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS base WORKDIR /app EXPOSE 80 EXPOSE 443 FROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim AS build WORKDIR /src COPY ["Docker.WebApi01/Docker.WebApi01.csproj", "Docker.WebApi01/"] RUN dotnet restore "Docker.WebApi01/Docker.WebApi01.csproj" COPY . . WORKDIR "/src/Docker.WebApi01" RUN dotnet build "Docker.WebApi01.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "Docker.WebApi01.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "Docker.WebApi01.dll"]
上面代码含义说明:
接着,调试
在工具栏的调试下拉列表中选择“Docker”,而后开始调试应用。 你可能会看到提示信任证书的消息;选择信任证书以继续。
“输出” 窗口中的“容器工具” 选项显示正在进行的操做。 第一次时,可能须要一些时间来下载基本映像,但在后续运行时速度要快得多。
最后,构建及运行
docker build -t dockerwebapi01 -f ./Docker.WebApi01/Dockerfile . docker run --rm -it -p 49181:443 dockerwebapi01
注意这里有一个坑直接在Dockerfile目录下执行会报如下错误:
=> ERROR [build 3/7] COPY [Docker.WebApi01/Docker.WebApi01.csproj, Docker.WebApi01/]
遇到这个问题有两个解决方案,其一是把Dockerfile文件放到sln同一个目录下,而后执行docker build,另外一个是本文采用的方法,在sln目录下执行,须要指定Dockerfile路径
咱们在浏览器上输入: https://localhost:49181/WeatherForecast 看看效果