当前位置: 首页 > news >正文

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

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

相关文章:

  • 【C++】构造函数、析构函数、拷贝构造与运算符重载
  • 乡村振兴的乡村旅游新模式:挖掘乡村旅游资源,创新旅游开发方式,打造乡村旅游新品牌,助力美丽乡村建设
  • 迅睿 CMS 中开启【ionCube 扩展】的方法
  • LVM、磁盘配额
  • 免费分享一套SpringBoot+Vue企业客户关系CRM管理系统【论文+源码+SQL脚本+PPT】,帅呆了~~
  • 现在AI发展迅猛的情况下,应届生选择Java还是C++?
  • 13、设计模式之观察者模式
  • 视频汇聚平台LntonCVS视频监控系统前端错误日志记录及Debug模式详细讲解
  • 域名绑定ip和端口的方法是什么?
  • 一键秒删TXT文本符号,释放工作效率新高度,轻松应对海量文本处理挑战!
  • lua 计算第几周
  • Geotools--生成等值线
  • 【微服务】安装docker以及可视化界面
  • R可视化:可直接发表的柱状图
  • 开源远程协助:分享屏幕,隔空协助!
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • angular2 简述
  • classpath对获取配置文件的影响
  • ESLint简单操作
  • Hexo+码云+git快速搭建免费的静态Blog
  • Javascript 原型链
  • js正则,这点儿就够用了
  • Laravel5.4 Queues队列学习
  • PAT A1050
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • Spring框架之我见(三)——IOC、AOP
  • 阿里云购买磁盘后挂载
  • 入口文件开始,分析Vue源码实现
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 小程序开发中的那些坑
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • #{}和${}的区别是什么 -- java面试
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (11)MSP430F5529 定时器B
  • (TOJ2804)Even? Odd?
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (推荐)叮当——中文语音对话机器人
  • (五)IO流之ByteArrayInput/OutputStream
  • .Net core 6.0 升8.0
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .NET MVC之AOP
  • .NET 反射的使用
  • .NET 解决重复提交问题
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • @EnableConfigurationProperties注解使用
  • [ C++ ] 继承
  • [14]内置对象
  • [17]JAVAEE-HTTP协议
  • [2016.7.Test1] T1 三进制异或
  • [2023年]-hadoop面试真题(一)
  • [2023-年度总结]凡是过往,皆为序章
  • [Android]通过PhoneLookup读取所有电话号码