众所周知,windows有下有两种docker容器实现方式

一种是基于虚拟化跑一个linux内核(Hyper-V WSL2),另一种是Windows原生容器(Windows container)。

本文讨论的是Windows原生容器,而不是基于虚拟化技术实现的容器。

要使用Windows container原生容器有两种方法

方法1:安装Desktop Docker

可以直接去Desktop Docker官方下载

需要在安装过程的中

取消勾选 “Use WSL 2 instead of Hyper-V (recommended)” 选项

勾选 “Allow Windows Containers to be used with this installation” 选项

并在安装完成后右键任务栏右边的docker图标,选择“switch to windows containers”切换到windows容器模式。

设置完成后即可直接在终端或者Desktop Docker管理容器。

方法2:直接使用Docker daemon + Docker CLI

需要手动打开windows的容器功能

在控制面板\程序\程序和功能->启用或关闭 Windows 功能中打开

或者在powershell中运行Enable-WindowsOptionalFeature -Online -FeatureName containers –All 即可打开容器功能,可能需要重启才生效。

然后去下载Windows的Docker daemon和Docker CLI二进制静态可执行文件

下载地址:Index of win/static/stable/x86_64/,可以拉到最下面下载最新版本的

下载下来后解压,进入到解压的docker目录

image-ArVB.png

有两个可执行文件,其中dockerd.exe是Docker守护程序,docker.exe是Docker CLI管理工具。

使用管理员身份的终端加参数执行

dockerd.exe --exec-opt isolation=process

即可以进程隔离(即windows原生容器)模式启动Docker守护程序,此时可以使用docker.exe连接并管理守护进程(docker.exe也需要管理员权限)。

其他问题:

如果想在任意路径下使用docker,请考虑把docker.exe加入环境变量。

可注册Docker守护程序为windows服务实现自启

dockerd.exe --register-service

如果想让Docker守护程序默认以进程隔离模式启动,需要编辑

C:\ProgramData\docker\config\daemon.json

(config文件夹和daemon.json需要手动创建)

在daemon.json中写入

{
  "exec-opts": ["isolation=process"]
}

其他:

这windows的java,python镜像动不动就几个G,比系统安装镜像还大了属于是,最小的容器镜像是nanoserver,但里面几乎什么东西都没有,目前只知道有curl。

PS C:\Windows\System> docker image ls
REPOSITORY                             TAG        IMAGE ID       CREATED        SIZE
mcr.microsoft.com/windows/nanoserver   ltsc2025   78ff0c084746   4 days ago     469MB
python                                 latest     aaf6d53d74e8   3 weeks ago    7.55GB
openjdk                                24         770aa29a0206   2 months ago   7.24GB
openjdk                                23         7d7e50a177b9   8 months ago   3.62GB
openjdk                                latest     45a92b5760d1   2 years ago    3.44GB
PS C:\Windows\System>

这windows原生容器我没有找到能用GUI的方法,python安装包程序和java安装包程序都无法正常运行,但可以手动复制文件进去或者挂载目录进去用。

参考文档:

Running Windows and Linux containers without Docker Desktop

不安装 Docker Desktop 使用 Windows Docker 容器 – Heresy's Space

隔离模式 | Microsoft Learn

Windows 容器基础映像 | Microsoft Learn

枯死的灌木!