在winnas中使用docker desktop遇到的问题及解决方法记录

最近在尝试从群晖转向winnas,一些简单的服务依然计划使用docker来部署。群晖的docker简单易用且稳定,在win上使用docker desktop过程中遇到了不少问题,在此记录一下以供后来人参考。

一、安装docker desktop后启动时遇到无法启动docker引擎

**原因一:**没有安装wsl

解决方法:安装wsl。网上安装wsl的教程还是不少,参考教程安装即可。

注意事项(1)安装wsl过程中遇到0x80072EE7错误

解决方法:

  1. 管理-服务-中打开windows update;

  2. dns设置为4.2.2.1

注意事项(2):安装wsl过程中遇到0x80072ee2错误

问题原因,无法访问远程服务器(网络)

解决方法:手动下载wsl分发版本安装(网上搜索能搜到如何手动下载安装),或者想办法访问外网。

**原因二:**要把wsl内核版本从1升到2:

获取WSL2 Linux内核更新包并运行

https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

将 WSL 2 设置为默认版本

命令行运行:

复制代码
wsl --set-default-version 2

然后再更新wsl内核

复制代码
wsl --update

参考:

如何使用 wsl --update 命令来更新WSL的内核?

更新WSL(Windows Subsystem for Linux)内核的步骤可能会因Windows版本的不同而有所差异。以下是在不同Windows版本上使用wsl --update命令更新WSL内核的步骤:

在Windows 11上更新WSL内核:

  1. 点击Windows 11的"开始"按钮。
  2. 搜索"命令提示符",在搜索结果中右击"命令提示符",并选择"以管理员身份运行"选项。
  3. (可选)输入以下命令以确认当前的WSL版本,然后按"Enter"键:wsl --version
  4. 输入以下命令以更新WSL,并按"Enter"键:wsl --update
  5. (可选)输入以下命令以确认已安装了最新的内核更新,然后按"Enter"键:wsl --version
  6. (可选)输入以下命令以恢复到WSL的先前版本,然后按"Enter"键:wsl --update --rollback
  7. 完成以上步骤后,如果有可用的更新,它将下载并安装到你的电脑上1

在Windows 10上更新WSL内核:

  1. 点击"开始"按钮。
  2. 搜索"命令提示符",在搜索结果中右击"命令提示符",并选择"以管理员身份运行"选项。
  3. 输入以下命令以更新WSL内核,并按"Enter"键:wsl --update
  4. 等待命令执行完成,它会自动检查并下载可用的内核更新2

二、docker desktop(wsl)内存开销大,通过配置文件限制内存使用

标题并不准确,应该是wsl内存消耗大,为了好理解,统称为docker内存开销大。

我的winnas跑在一个小工控机上,性能差,内存只有8GB,内存消耗敏感。wsl开始默认就占了快4GB,所以要通过wsl配置文件限制内存消耗。

配置wsl有两种方法,一种是全局配置;一种是单个wsl分发版配置,网上都有不少教程。

微软官方文档如下:

WSL 中的高级设置配置 | Microsoft Learn

我用到了全局配置:

修改C:\Users\【用户名】文件夹下的.wslconfig文件,就可以更改wsl全局配置。

注意事项(1):这个文件夹下没有这个文件的,直接自己新建一个就行,.txt文件改.wslconfig就可以。

注意事项(2):不同win版本的可配置项是不同的,具体参考微软官方文档。

我的是win10,借用网上前辈的配置,简单改了一下,供参考:

复制代码
[experimental]
#自动释放内存
autoMemoryReclaim=gradual
#网络镜像模式
#networkingMode=mirrored
#hostAddressLoopback=true

[wsl2] 

memory=800MB
swap=0GB


#共用 Windows DNS、防火墙、代理设置
dnsTunneling=true
firewall=true
autoProxy=true

注意事项(3):8秒规则,wsl完全停止需要8秒

wsl在手动停止运行后是需要时间将全部服务停止的,一般会需要8秒左右。wsl8秒完全停止后,再重新启动才会正确读取更新的配置文件。如果wsl停止后立即改变配置文件立即重启,是有可能不会读取新修改的配置文件,还会沿用上一次配置。

注意事项(4):wsl最小内存配置800MB。

我个人简单测试了一下,在docker容器很少,很低负载情况下,wsl也需要800MB内存才能稳定运行。在700MB内存下就会出现wsl或容器停止运行的情况,不稳定。

内存配置仅供参考。

判断docker运行情况的小技巧:

在docker desktop主界面中【Container memory usage】和左下角【RAM】都正常显示数值的时候,wsl就在正常运行。这两个数值任何一个不正常显示数据了wsl就是崩了。

三、docker desktop设置容器自动重启

通常希望容器在遇到问题停止后能够自动重启。

(1)容器部署时设置自动重启

查查网上教程吧。

(2)容器部署后设置自动重启

通过命令行更新单个容器配置:

复制代码
docker update --restart=【重启方式参数】 【容器ID(或者容器名)】

如:

docker update --restart=unless-stopped ABCDFEGHI

常用重启方式参数:

no:容器非正常退出时不重启。

on-failure:容器因错误退出时重启,重启次数可以限制。

always:无论退出状态如何,总是重启容器。

unless-stopped:容器退出后总是重启,除非它被用户明确停止。

容器ID:

在docker desktop中可以查看并复制。

以上。有帮到你的话请留个言回复一下。

相关推荐
上天_去_做颗惺星 EVE_BLUE19 小时前
Docker高效使用指南:从基础到实战模板
开发语言·ubuntu·docker·容器·mac·虚拟环境
怣5019 小时前
Windows 11 临时文件清理完全指南:释放宝贵磁盘空间
windows·清理c盘
小白跃升坊20 小时前
基于1Panel的AI运维
linux·运维·人工智能·ai大模型·教学·ai agent
杨江20 小时前
seafile docker安装说明
运维
好好沉淀20 小时前
Docker开发笔记(详解)
运维·docker·容器
热爱生活的五柒20 小时前
WebDAV如何使用?
windows
zmjjdank1ng20 小时前
Linux 输出重定向
linux·运维
路由侠内网穿透.20 小时前
本地部署智能家居集成解决方案 ESPHome 并实现外部访问( Linux 版本)
linux·运维·服务器·网络协议·智能家居
树℡独21 小时前
ns-3仿真之应用层(三)
运维·服务器·ns3
VekiSon21 小时前
Linux内核驱动——基础概念与开发环境搭建
linux·运维·服务器·c语言·arm开发