在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中可以查看并复制。

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

相关推荐
恩爸编程1 小时前
探索 Nginx:Web 世界的幕后英雄
运维·nginx·nginx反向代理·nginx是什么·nginx静态资源服务器·nginx服务器·nginx解决哪些问题
鸠摩智首席音效师2 小时前
Docker 中如何限制CPU和内存的使用 ?
docker·容器
Michaelwubo2 小时前
Docker dockerfile镜像编码 centos7
运维·docker·容器
jingyu飞鸟2 小时前
centos-stream9系统安装docker
linux·docker·centos
好像是个likun3 小时前
使用docker拉取镜像很慢或者总是超时的问题
运维·docker·容器
Clockwiseee4 小时前
php伪协议
windows·安全·web安全·网络安全
玖疯子5 小时前
介绍 Docker 的基本概念和优势,以及在应用程序开发中的实际应用。
docker
暴富的Tdy5 小时前
【快速上手Docker 简单配置方法】
docker·容器·eureka
cominglately5 小时前
centos单机部署seata
linux·运维·centos
CircleMouse5 小时前
Centos7, 使用yum工具,出现 Could not resolve host: mirrorlist.centos.org
linux·运维·服务器·centos