如何在Windows Server 2022上无需登录持久运行Linux Docker容器
解决Windows Server 2022下dockerd服务运行Linux容器的问题
核心问题
你创建的dockerd Windows服务默认启用Windows容器引擎,但Linux容器需要依赖WSL2/Hyper-V虚拟化后端,且服务需显式配置为Linux模式运行——这就是你无法通过服务创建Linux容器的原因。
解决步骤
1. 确认虚拟化后端状态
由于你登录账户下可正常运行Linux容器,只需快速验证:
- WSL2:执行
wsl --list --verbose,确认存在已安装的Linux发行版且版本为2; - Hyper-V:确认Windows Server已安装Hyper-V角色,且虚拟机平台功能启用。
2. 配置dockerd服务为Linux模式
方式1:通过daemon.json配置
编辑(无则创建)C:\ProgramData\docker\config\daemon.json,根据虚拟化后端添加对应配置:
- WSL2后端:
{ "storage-driver": "overlay2", "data-root": "\\\\wsl$\\<你的WSL发行版名称>\\var\\lib\\docker", "hosts": ["npipe:////./pipe/docker_engine"], "default-runtime": "runc" }
替换<你的WSL发行版名称>为实际名称(如Ubuntu-22.04)。
- Hyper-V后端:
{ "storage-driver": "windowsfilter", "data-root": "C:\\ProgramData\\docker\\linux-data", "hosts": ["npipe:////./pipe/docker_engine"], "default-runtime": "runhcs" }
方式2:修改服务启动参数
直接调整dockerd服务的启动命令(管理员权限执行):
sc config dockerd binPath= "\"C:\Program Files\Docker\Docker\resources\dockerd.exe\" --run-service --storage-driver=overlay2 --data-root=\\\\wsl$\\<你的WSL发行版名称>\\var\\lib\\docker" sc stop dockerd && sc start dockerd
3. 验证配置
执行 docker info,检查输出中OSType是否为linux、Storage Driver是否匹配配置。随后测试运行Linux镜像:
docker run hello-world
4. 权限检查
若dockerd服务使用自定义账户,需确保该账户:
- 拥有WSL2/Hyper-V的访问权限(可加入Administrators组);
- 对docker数据目录有读写权限。
内容的提问来源于stack exchange,提问作者CaptainInler
相关产品推荐
相关产品推荐

