在本系列的Docker入门中,我们介绍了容器的基本概念,以及如何在Ubuntu(Linux)上安装Docker引擎来进行容器化引用的开发。
本篇我们介绍如何在Windows系统上安装和使用Docker,这里主要介绍在Windows 10上安装和使用Docker Desktop,对于Windows 10以下的版本,可以使用Docker Toolbox,这里就不做介绍了.

安装Docker Desktop

Docker Desktop - The fastest way to containerize applications on your desktop, 这是Docker官方的定义,Docker Desktop为Windows和Mac提供了一个桌面化的容器开发环境,在Windows 10上,Docker Desktop使用了Windows的Hyper-V虚拟化技术,因此你需要一台打开了硬件虚化化的电脑并且安装的是Windows 10专业版以上的系统,还需要打开Hyper-V功能,如何在Windows 10上打开Hyper-V,参考这里

补充 : Docker Desktop支持Windows 10 64位: 专业版,企业版,教育版 (Build 15063 或以上).

首先在满足条件的Windows系统上下载Docker Desktop的安装包 - https://hub.docker.com/editions/community/docker-ce-desktop-windows .安装过程是简单的,直接双击下载的安装,更具提示安装就好了,一开始我们选择使用Linux容器(之后可以其他换到使用Windows容器的方式,会单独写一篇来介绍使用Windows容器).安装过程中安装程序会检查系统是否满足,如果不满足,安装程序会报错并结束安装.

安装完成之后,打开 开始 菜单,然后选择 Docker Desktop 启动.

查看状态栏上的Docker图标,一开始会显示 starting 装,等到显示Docker Desktop is running,就可以通过终端(例如 PowerSheel)来使用Docker的相关命令了,下面我们将使用Windows 10的PowerShell作为终端来进行操作.

docker-desktop-version

构建和运行容器

我们将使用一个简单Node应用来示例如何在Windows上构建容器镜像和启动一个容器.首先我们需要将代码库下载到我们的环境中,这里可以使用Git来克隆代码库或者直接下载代码包.

在Windows上,可以使用Git for Windows,也可以使用Windows 10的WSL安装一个Ubuntu子系统,然后在Ubuntu子系统终端里安装Git,并直接使用Git克隆代码,这里我使用的是在Ubuntu子系统终端里克隆代码库到本地目录.

Git-clone

如上图所示,我们把代码克隆到了D:\gitrepos\hellonode\目录,然后切换到PowerShell终端,进入该目录. 用你喜欢的文本编辑器打开hellonode\Dockerfile(推荐时候用VS Code,内容如下

FROM node:12.2-alpine

MAINTAINER Mengz You <mengz.you@outlook.com>

WORKDIR /app

COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 3000

CMD ["npm","start"]

构建镜像

使用这个简单的Dockerfile,用于构建示例的Node应用,在Powershell中执行如下命令

docker image build -t hellnode:local .
docker image ls

如下图所示,将会看到构建的容器镜像

Build-image

运行容器

接着我们使用构建好的镜像来启动一个应用容器,在Powershell中执行如下命令

docker container run --name hellonode -d -p 3000:3000 hellonode:local
docker container ls

Container-run

这样我们就启动了一个容器,并且可以使用docker contianer ls查看当前的容器状态,同时我们也可以使用Docker Desktop的Dashboard来图形化查看容器状态并进行一些操作,要打开Dashboard,点击状态栏的Docker Desktop图标,选择Dashboard打开,如下图所示

Desktop-dashboard

在Dashboard上,我们可以UI操作的方式查看容器相关的信息,例如查看容器的日志,停止/启动/重启容器,还可以进入容器CLI等操作.

在运行容器时,我们使用-p 3000:3000指定了将容器应用的3000端口映射到了本地的3000端口,所以我们可以直接访问本地3000端口来访问应用

Bowser-access

之后,我们可以使用一下命令停止和删除掉容器

docker container stop hellonode
docker contianer rm hellonode

推送镜像到Docker Hub

如何你需要将构建的镜像推送到Docker Hub,首先需要登录你的Docker Hub帐号,点击状态栏的Docker Desktop图标,选择Sign in/Create Docker ID..,打开登录窗口进行登录

Dockerhub

然后我们在PowerShell里执行

docker image tag hellonode:local mengzyou/hellonode:v1.0
docker image push mengzyou/hellonode:v1.0

这样就会将镜像推送到Docker Hub上你的仓库中了.

总结

这里是简单介绍了下如何在Windows 10上使用Docker Desktop来进行容器话应用的开发,Docker Desktop为Windows用户提供了很好的Docker容器化工具,除了可以使用Docker引擎之外,Docker Desktop还提供了Kubenetes功能,可以在Windows上运行一个单机的K8S环境,更多信息可以阅读官方文档

虽然Docker Desktop为Windows提供了一个可视化的管理工具,不过我还是推荐直接在Linux桌面上直接使用Docker引擎,在Linux环境中,如果你也想要一个UI的管理工具,我推荐使用Portainer - 一个基于Web的容器管理工具.