Docker基础教程(二十七)二进制包安装之Windows版:Windows上的Docker,别让你的鲸鱼在Windows上搁浅!

01 跨平台容器工具,Docker如何实现Windows兼容?

Docker本质上是一个 Linux原生工具,它依赖于Linux内核特性来实现容器化。那么在Windows上它是如何工作的呢?答案在于虚拟机技术。

Docker Desktop for Windows通过在后台创建一个轻量级的Linux虚拟机,然后在这个VM中运行Docker引擎。这种方式虽然增加了一些开销,但使得Windows用户能够无缝地使用Docker体验。

Windows 10专业版或企业版用户可以直接使用Hyper-V虚拟机监控程序来运行Docker。而Windows 10家庭版用户则需要安装Docker Toolbox,它使用Oracle VirtualBox而不是Hyper-V。

02 系统要求与安装,让Docker在Windows运行起来

要在Windows上运行Docker,你的系统需要满足一些基本要求。对于Docker Desktop for Windows,你需要64位版本的Windows 10 Pro,且必须开启Hyper-V(若版本为v1903及以上则无需开启Hyper-V),或者64位版本的Windows 10 Home v1903及以上版本。

安装Docker for Windows有两种主要方式。一是手动下载安装,从官方链接下载Docker Desktop for Windows安装程序。二是使用winget命令行工具安装,只需在PowerShell中执行以下命令:


winget install Docker.DockerDesktop

安装完成后,你可以在Windows搜索栏中输入“Docker”,点击“Docker Desktop”开始运行。Docker启动之后会在Windows任务栏出现鲸鱼图标,当鲸鱼图标静止时,说明Docker启动成功。

03 配置与优化,提升Windows Docker体验

安装完成只是第一步,合理的配置能够显著提升Docker在Windows上的使用体验。配置镜像加速是至关重要的一步,特别是在国内网络环境下。

你可以配置国内镜像源来加速镜像下载,例如使用阿里云、腾讯云等提供的镜像加速服务。

对于使用WSL2的用户,Docker提供了更好的集成体验。若你的Windows版本为Windows 10专业版或家庭版v1903及以上版本,可以使用WSL2运行Docker,具体可查看Docker Desktop WSL 2 backend文档。

性能优化也是不可忽视的环节。在Windows上使用Docker可能会遇到一些性能问题,例如启动容器的速度可能会稍慢一些,在Windows上运行的容器可能会比在Linux上运行的容器略慢一些。

为了解决这些问题,你可以尝试使用更高配置的计算机,使用更新的Docker for Windows版本,因为新版本通常会包含性能改进,使用更新的Windows版本,因为新版本通常会包含性能改进。

04 实战示例,在Docker中运行Windows容器

下面让我们来看一个具体的例子,如何在Docker中运行Windows容器。我们将使用dockurr/windows镜像来运行一个Windows 7容器。

首先,你需要加载dockurr/windows的镜像:


docker load -i windows.tar

然后,准备相应的文件和环境。创建docker-compose.yml文件如下:



services:
  windows:
    image: dockurr/windows
    container_name: windows
    devices:
      - /dev/kvm
    cap_add:
      - NET_ADMIN
    ports:
      - 8006:8006
      - 13389:3389/tcp
      - 13389:3389/udp
    stop_grace_period: 2m
    volumes:
      - ./win7/storage:/storage
      - ./win7/data:/data
      - ./win7/win7x64.iso:/custom.iso

你可以通过环境变量调整容器的资源配置:



environment:
  RAM_SIZE: "8G"
  CPU_CORES: "4"
  DISK_SIZE: "256G"

在相应目录下运行以下命令启动容器:


docker-compose up -d

等待安装完成后,你可以通过两种方式连接容器:通过浏览器访问http://127.0.0.1:8006,或通过远程桌面连接(专业版功能)。

05 Windows Dockerfile技巧,编写高效容器脚本

编写Windows下的Dockerfile有一些特殊技巧。首先要了解ENTRYPOINT和CMD命令的正确使用方式。ENTRYPOINT和CMD都可以用来指定docker容器实例启动时执行的启动程序,这两个命令可以分别使用,但是一般推荐组合使用。

下面是一个Windows Server Dockerfile的示例:



FROM microsoft/windowsservercore
 
ENTRYPOINT ["ping", "-n", "3"]
CMD ["baidu.com"]

在这个例子中,如果我们在命令行执行
docker run entrypoint_and_cmd
启动这个docker容器,它就相当于执行了
ping -n 3 baidu.com
命令。而如果我们用
docker run entrypoint_and_cmd 360.cn
启动这个容器,则相当于执行了
ping -n 3 360.cn
命令。

ADD和COPY命令在Windows Docker环境下也有其特点。在Linux下的docker中,ADD命令有一个特殊能力,就是如果ADD一个zip压缩包的话,docker build时它能做自动解压缩,但是在Windows Docker下,没有这个效果。

合并和减少RUN命令也是优化Dockerfile的重要方法。过多的RUN命令会导致Dockerfile构建变得非常慢,因为每个RUN命令都会创建一个新的镜像层。我们应该合理地合并没必要分开RUN的命令。

06 性能对比,Windows与Linux容器运行差异

在Windows上运行Docker与在Linux上运行确实存在一些性能差异。这些差异主要来自于Windows需要通过虚拟机来运行Docker引擎这一事实。

具体来说,在Windows上使用Docker可能会遇到以下性能问题:启动容器的速度可能会稍慢一些;在Windows上运行的容器可能会比在Linux上运行的容器略慢一些;由于Windows上的Docker实现使用了虚拟机,因此可能会有一些资源开销。

不过,尽管存在这些问题,但是在大多数情况下,在Windows上使用Docker的性能仍然足够优秀。

为了最大化Windows上的Docker性能,你可以采取以下措施:确保你的Windows和Docker Desktop都是最新版本;为Docker分配足够的资源(内存、CPU);使用WSL2后端(如果可用);将项目文件放在Linux文件系统上(通过WSL2)而不是Windows文件系统上。

07 常见问题与解决,避免潜在陷阱

在使用Docker for Windows过程中,你可能会遇到一些常见问题。中文系统安装问题是一个常见陷阱。使用中文版的Windows安装包可能会出现错误:“BdsDxe: failed to load Boot0002 “UEFI QEMU QEMU HARDDISK ” from PciRoot(0x0)/Pci(0xA,0x0)/Scsi(0x0,0x0): Not Found”。

解决这个问题的方法是先安装英文系统,然后再安装中文语言包。

虚拟化冲突是另一个常见问题。当你启用Hyper-V来运行Docker for Windows时,其他虚拟化工具如QEMU、VirtualBox或VMWare Workstation 15及以下版本将无法使用。

性能问题也需要特别关注。如果你发现Docker在Windows上运行缓慢,可以尝试调整资源分配:增加Docker可用的内存和CPU核心数;将磁盘映像存储在SSD而不是HDD上;关闭不必要的后台进程。

08 资源与下载,获取官方Docker工具

获取Docker for Windows的最佳方式是从官方渠道下载。对于Windows 10以下的用户,推荐使用Docker Toolbox,Windows安装文件可以从阿里云镜像下载:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/

对于Windows 10以上的用户,推荐使用Docker for Windows,Windows安装文件也可以从阿里云镜像下载:http://mirrors.aliyun.com/docker-toolbox/windows/docker-for-windows/

Docker Desktop官方下载地址为:https://hub.docker.com/editions/community/docker-ce-desktop-windows


Windows容器生态正在快速发展,Docker Desktop也在不断优化性能和使用体验。微软正在加大对容器技术的支持,未来Windows容器可能会更加轻量高效。

Docker for Windows已经从一个实验性功能发展成为开发者的强大工具。无论是.NET开发人员想要容器化他们的应用,还是运维人员需要管理混合环境,Docker for Windows都提供了强大而灵活的解决方案。

就像港口最终容纳了各种船只,Windows世界也终于拥抱了Docker这艘曾经只属于Linux海洋的巨轮

© 版权声明

相关文章

暂无评论

none
暂无评论...