Docker:在 Docker 安装部署 Windows 镜像容器

1. 前言

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
基于 Docker 技术,开发人员可以有效解决应用部署环境不一致的问题,实现 环境标准化:即一次创建部署,任意地方运行,从而方便的进行迁移、部署、维护、迭代,同时提高资源利用效率和响应速度,另外应用于资源的隔离也能有效提升安全性。

YRf2mZDL6fRHIohz12etd7nTzqrqzN7Y9aBZTaXoQ8Q=.png

2. Docker 对 Windows 容器的支持

Docker 发展早期是并不支持 Windows 容器的,但是后来随着 Docker 的发展,也将 Windows 系统纳入容器支持范围,详情可参考文章:《Windows 容器文档)》。
一些企业在开发过程中,会选择使用 Windows 作系统为开发和部署环境,但是 Windows 系统本身和 Linux 一样也存在版本和环境差异,应用的部署迁移同样面临环境不一致问题,因此 Docker 对 Windows 容器的支持也显得尤为必要。

  • Docker Hub 上的 Windows 相关镜像:
PS C:\Users\Administrator> docker search windows
NAME                                            DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
microsoft/windowsservercore                     The official Windows Server Core base image     653
microsoft/windowsservercore-insider             The official Windows Server Core insider bas…   30
dockcross/windows-x64                           64-bit Windows cross-compiler based on MXE/M…   11
toolboc/windows95                               Windows 95 in a container                       4                                       [OK]
cloudfoundry/windows2016fs                                                                      4
coderobin/windows-sdk-10.1                      Windows SDK 10.1 for Windows Container (base…   3                                       [OK]
dockcross/windows-x86                           32-bit Windows cross-compiler based on MXE/M…   3
malice/windows-defender                         Malice Windows Defender AntiVirus Plugin        2                                       [OK]
cirrusci/windowsservercore                      Windows containers that can be executed on G…   2
mgba/windows                                    Windows autobuilds                              1                                       [OK]
surazzarus/windows7-starter                                                                     1
slightlytyler/windows-test                                                                      0
bmedora/windows-login-loadgen                                                                   0
pcfeagle/windows-pipeline-image                 Docker image used to run windows pipeline of…   0
bonzofenix/windows-builder                                                                      0
netlims/windows-frontend-gateway                                                                0
shawnneal/windows-stemcell-concourse            Used by https://github.com/cloudfoundry-comm…   0
ramicro/windows-node                                                                            0
cfcommunity/windows-stemcell-concourse          For use with the Concourse tasks in the cf-c…   0
mback2k/windows-buildbot-msys2                  My personal version of a public Docker image…   0
patrickhuber/windows-stemcell-builder-runtime                                                   0
mcy93w/windowsservercore                                                                        0
ramicro/windows-base                                                                            0
ramicro/windows-openjdk                                                                         0
toktoknet/windows                               Windows cross compilers: i686 and x86_64.       0

3. Docker 安装 Windows Server 容器

  • 首先需要确保你的电脑上已经安装了 docker for windows 软件,如果尚未安装可以参考我的另一篇文章《Docker:在 windows 10 上安装 docker 步骤》;
  • 切换到 Windows containers
    如下图,鼠标点击 docker 图标右键,之后点击 Switch to Windows containers...
    b7e02a92cc7689b498dc430e3a6b264c332c9c1f (1).jpg
  • 注意:进行上面切换这一步时有时可能会遇到 Required Windows feature(s) not enabled 报错:
Required Windows feature(s) not enabled : Containers. Docker Desktop will exit.

遇到上面的报错时,可以复制下面的内容,保存成 .bat 批处理文件,并以管理员身份执行 .bat 文件,等待执行完毕、电脑重启后,重新安装安装 Docker Desktop Installer.exe,安装完毕后进行上一步切换动作。

pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*containers*.mum >containers.txt
for /f %%i in ('findstr /i . containers.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del containers.txt
Dism /online /enable-feature /featurename:Containers -All /LimitAccess /ALL
pause
  • 成功切换到 Windows
docker version

得到下面提示表示切换成功:

Client: Docker Engine - Community
 Cloud integration: 1.0.2
 Version:           19.03.13
 API version:       1.40
 Go version:        go1.13.15
 Git commit:        4484c46d9d
 Built:             Wed Sep 16 17:00:27 2020
 OS/Arch:           windows/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.13
  API version:      1.40 (minimum version 1.24)
  Go version:       go1.13.15
  Git commit:       4484c46d9d
  Built:            Wed Sep 16 17:14:20 2020
  OS/Arch:          windows/amd64
  • 下载 Windows Server 2019 镜像
    关于 Windows 的镜像,除了上面使用 docker search windows 搜索镜像以外,也可以在 docker hub 上查找 Windows 镜像,地址:https://hub.docker.com/search?q=windows&type=image。这里我们选择第一个 Windows Server Core 并 pull 到本地,如下图:
image.png
docker pull mcr.microsoft.com/windows/servercore:ltsc2019

注意:由于加速器在 Windows 容器并不适用,所以下载速度较慢。

你可能感兴趣的:(Docker:在 Docker 安装部署 Windows 镜像容器)