windows下安装docker
Docker 并非是一个通用的容器工具,它依赖于已存在并运行的 Linux 内核环境。
Docker 实质上是在已经运行的 Linux 下制造了一个隔离的文件环境,因此它执行的效率几乎等同于所部署的 Linux 主机。
因此,Docker 必须部署在 Linux 内核的系统上。如果其他系统想部署 Docker 就必须安装一个虚拟 Linux 环境。
在 Windows 上部署 Docker 的方法都是先安装一个虚拟机,并在安装 Linux 系统的的虚拟机中运行 Docker。
1.Win10 系统与Docker
Docker Desktop 是 Docker 在 Windows 10 和 macOS 操作系统上的官方安装方式,这个方法依然属于先在虚拟机中安装 Linux 然后再安装 Docker 的方法。
Docker Desktop 官方下载地址: https://hub.docker.com/editions/community/docker-ce-desktop-windows
注意:此方法仅适用于 Windows 10 操作系统专业版、企业版、教育版和部分家庭版!
2.安装 Hyper-V
Hyper-V 是微软开发的虚拟机,类似于 VMWare 或 VirtualBox,仅适用于 Windows 10。这是 Docker Desktop for Windows 所使用的虚拟机。
但是,这个虚拟机一旦启用,QEMU、VirtualBox 或 VMWare Workstation 15 及以下版本将无法使用!如果你必须在电脑上使用其他虚拟机(例如开发 Android 应用必须使用的模拟器),请不要使用 Hyper-V!
3.安装Docker Desktop for Windows
下载完成exe文件,直接点击进行安装即可,然后安装成功后如下界面,也可以同时注册一个docker账号
4.测试安装结果
打开cmd命令窗口,输入
docker run hello-world
出现以下结果即为安装成功。
同时在docker desktop images中可以看到已经多了一个hello-world的镜像
5.发布.netcore项目到docker
最关键的来了,如何将支持跨平台的.netcore项目部署到docker中呢?
我们先创建一个.netcore的web项目,此处我选择的为.netcore3.1
在创建时需要选择启用docker支持并且选择windows容器
查看解决方案,设置Dockerfile文件为始终复制,此处不设置也可以,后续发布后要在publish文件夹中新建Dockerfile文件
Dockerfile文件内容如下
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
#Depending on the operating system of the host machines(s) that will build or run the containers, the image specified in the FROM statement may need to be changed.
#For more information, please see https://aka.ms/containercompat
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY ["CoreForDocker/CoreForDocker.csproj", "CoreForDocker/"]
RUN dotnet restore "CoreForDocker/CoreForDocker.csproj"
COPY . .
WORKDIR "/src/CoreForDocker"
RUN dotnet build "CoreForDocker.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "CoreForDocker.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "CoreForDocker.dll"]
本地F5直接运行项目,确保项目是可以正常运行的
然后右键发布项目到文件夹中即可
打开发布的目录文件,修改dockerfile文件,删除一些不要的信息 只留下以下的内容
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
COPY . .
ENTRYPOINT ["dotnet", "CoreForDocker.dll"]
创建docker images
在publish目录下打开powershell窗口(在目录下shift+右键),输入,注意,规范必须为小写字母命名
docker build -t corefordocker001 .
出现以上创建成功的提示
检查image
-
打开docker desktop,可以看到已经成功创建了这个image
-
或者使用命令查看:
docker images
绑定端口运行
-
使用命令绑定端口:
docker run --name=corefordocker1 -p 2020:80 -d corefordocker001
以上出现一串字符串说明是成功了
参数说明
-d ,表示在后台以守护态(daemonized)形式运行容器
-p 外部端口与内部容器端口映射。
--name 指定容器的名称。当然可以不指定,默认会为我们创建
最后一个参数 corefordocker001 就是我们刚创建的镜像名称
-
docker desktop中绑定端口
以上,我们分别用命令启动了2020端口 使用工具启动了2021端口
6.验证部署
打开浏览器,分别访问http://localhost:2021/ 与 http://localhost:2020/
都可以正常进行访问