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/

都可以正常进行访问

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐