1 什么是Docker?Docker是一个用于开发 , 发布和运行应用程序的开放平台 。Docker使您能够将应用程序与基础架构分开 , 从而可以快速交付软件 。借助Docker , 您可以以与管理应用程序相同的方式来管理基础架构 。通过利用Docker的方法来快速交付 , 测试和部署代码 , 您可以大大减少编写代码和在生产环境中运行代码之间的延迟 。
2 为什么需要Docker?2.1 解决环境配置麻烦一般我们写程序 , 会有开发环境 , 测试环境 , 生产环境 , 很多bug都是环境问题 。
过去部署的思路 , 在开发环境打包 , 想跑到Window环境下运行 。我们得先在Window下载好.NET Framework , IIS等 , 配置好对应的环境变量 , 将包丢到iis的webApps文件夹下 , 才能跑起来 。
现在Docker的思路 , 可以将我们的想要的环境构建成一个镜像 , 然后我们可以推送到网上去 。想要用这个环境的时候 , 在网上拉取一份就好了 。
2.2 解决应用之间隔离大家一定遇到过在多个应用部署在同一台服务器上 , 有一个应用出现了问题 , 导致CPU占100% , 其他应用也都受到影响 。还有就是比如有些应用用NET技术,有些应用用php技术,这些不同应用各种的依赖软件都安装在同一个服务器上 , 可能就会造成各种冲突/无法兼容 。
2.3 Docker与虚拟机
文章插图
对于虚拟机 , 主机服务器从下至上有三个基础层:基础架构 , 主机操作系统和虚拟机监控程序 , 最重要的是每个虚拟机都有自己的操作系统和所有必要的库 。对于Docker , 主机服务器仅具有基础结构和操作系统 , 最重要的是容器引擎 , 该容器引擎使容器保持隔离状态 , 但共享基本的OS服务 。
因为容器需要的资源要少得多(例如 , 它们不需要完整的操作系统) , 所以它们易于部署并且启动迅速 。这样可以提高密度 , 这意味着可以在同一硬件单元上运行更多服务 , 从而降低成本 。
作为在同一内核上运行的副作用 , 与VM相比 , 您获得的隔离更少 。
3 如何使用Docker?首先 , 安装Docker , 参考官方文档 。
- mac
- windows
- Ubuntu
- Debian
- centos
- Fedora
确保已选择“启用 Docker 支持”复选框 , 选择所需的容器类型(Windows 或 linux) 。
文章插图
接着 , 我们打开Dockerfile文件 , 请参阅Dockerfile引用 , 了解其中的命令:
FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS baseWORKDIR /appEXPOSE 80EXPOSE 443FROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim AS buildWORKDIR /srcCOPY ["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/buildFROM build AS publishRUN dotnet publish "Docker.WebApi01.csproj" -c Release -o /app/publishFROM base AS finalWORKDIR /appCOPY --from=publish /app/publish .ENTRYPOINT ["dotnet", "Docker.WebApi01.dll"]
上面代码含义说明:- FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS base:指定基础镜像文件mcr.microsoft.com/dotnet/aspnet , 标记为5.0-buster-slim , 别名为base 。
- WORKDIR /app:设置工作目录为/app
- EXPOSE 80:将容器 80 端口暴露出来 , 允许外部连接这个端口 。
- COPY ["Docker.WebApi01/Docker.WebApi01.csproj", "Docker.WebApi01/"]:将 Docker.WebApi01/Docker.WebApi01.csproj 复制到 Docker.WebApi01/目录下 。
- RUN dotnet restore "Docker.WebApi01/Docker.WebApi01.csproj":恢复 Docker.WebApi01.csproj 项目的依赖项和工具 。
- RUN dotnet build "Docker.WebApi01.csproj" -c Release -o /app/build:生成 Docker.WebApi01.csproj 项目及其所有依赖项 。
- RUN dotnet publish "Docker.WebApi01.csproj" -c Release -o /app/publish:将应用程序及其依赖项发布到文件夹以部署到托管系统 。
在工具栏的调试下拉列表中选择“Docker” , 然后开始调试应用 。你可能会看到提示信任证书的消息;选择信任证书以继续 。
推荐阅读
- 为什么老子姓李但不叫李子而叫老子?孔子是第一个姓孔的人
- 前端工程师如何判断一个对象是否有某个属性?
- 云计算核心技术Docker教程:docker-compose使用多个配置文件
- 施琅碑文中评价施琅的功绩使得四十余年之巨 历史上的施琅是怎样的一个人
- 龟头下面破了一个小口
- ?如何挑选马齿苋
- 一件有趣的事200字?一件有趣的事作文
- 在水浒传中的李逵是一个怎么样的人物? 水浒传中关于李逵的情节
- 元朝最后一个皇后是谁 元朝末代皇后
- 照字取名女孩子 照字取名好不好