Docker:在 Docker 安装部署 Windows 镜像容
2020-11-12 本文已影响0人
dex0423
1. 前言
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
基于 Docker 技术,开发人员可以有效解决应用部署环境不一致的问题,实现 环境标准化:即一次创建部署,任意地方运行,从而方便的进行迁移、部署、维护、迭代,同时提高资源利用效率和响应速度,另外应用于资源的隔离也能有效提升安全性。
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 到本地,如下图:
docker pull mcr.microsoft.com/windows/servercore:ltsc2019
注意:由于加速器在 Windows 容器并不适用,所以下载速度较慢。