工欲善其事必先利其器 之 DockerDesktop(下)

2023-05-16

工欲善其事必先利其器 之 DockerDesktop(下)

文章目录

  • 工欲善其事必先利其器 之 DockerDesktop(下)
  • 前言
  • 一、DockerDesktop Settings
  • 二、什么是 WSL 2?
  • 三、Docker Desktop 为什么使用 WSL 2?
  • 四、如何修改Docker Desktop镜像存放目录?
  • 五、如何限制 DockerDesktop CPU、内存使用率
  • 总结
  • 声明
  • 参考文献

前言

使用 DockerDesktop 拉取的镜像默认存放在 C:\Users\用户\AppData\Local\Docker 目录下,C盘资源比较宝贵,大量的镜像会占据C盘的大量空间,因此正常情况下都需要修改此目录。那么如何修改呢?


一、DockerDesktop Settings

我们先来了解下DockerDesktop Settings里相关功能。

  • DockerDesktop General界面

    我们可以看到通用设置里只是一些基本设置

    在这里插入图片描述

  • DockerDesktop Resources界面

    我们再来看一下资源设置,可以看到有个 Advanced ,这个是用来限制资源使用率的。

    在这里插入图片描述

  • DockerDesktop Docker Engine界面

    我们再来看一下 Docker Engine 这里是Docker Configuration 功能区,比如 镜像加速 就是在这个地方进行配置。

    在这里插入图片描述

  • DockerDesktop Experimental Features界面

    这里我们可以看到是 Docker Compose 功能区。

    在这里插入图片描述

  • DockerDesktop Kubernetes界面

    最后一个,我们可以看到,这里是 Kubernetes 功能区。

    在这里插入图片描述

了解完DockerDesktop Settings,我们并没有找到可以修改 C:\Users\用户\AppData\Local\Docker 的地方。这时我们就需要换个思路了,还记得安装DockerDesktop时,让我们安装的一个 WSL 2 backend 吗?这是什么东东呢?接下来,我们先来了解一下什么是 WSL 2


二、什么是 WSL 2?

WSL 2 是适用于 Linux 架构的 Windows 子系统的新版本,它支持适用于 Linux 的 Windows 子系统在 Windows 上运行 ELF64 Linux 二进制文件。它的主要目标是提高文件系统性能,以及增加完整的系统调用兼容性


三、Docker Desktop 为什么使用 WSL 2?

Windows Subsystem for Linux (WSL) 2 引入了重大的架构变更,它是由 Microsoft 构建的完整 Linux 内核,允许 Linux 容器无需仿真即可在本机运行。通过在 WSL 2 上运行 Docker Desktop,用户可以利用 Linux 工作区并避免同时维护 Linux 和 Windows 构建脚本。此外,WSL 2 改进了文件系统共享、启动时间,并允许 Docker Desktop用户访问一些新功能。

Docker Desktop 使用了 WSL 2 中的动态内存分配特性,极大地提高了资源消耗。这意味着,Docker Desktop 仅使用其所需的 CPU 和内存资源量,同时使 CPU 和内存密集型任务(例如构建容器)运行得更快。


四、如何修改Docker Desktop镜像存放目录?

  1. 列出Windows Subsystem for Linux

    wsl --list
    # 输出信息
    适用于 Linux 的 Windows 子系统分发版:
    docker-desktop (默认)
    docker-desktop-data
    
  2. 关闭docker desktop

  3. 关闭 wsl

    wsl --shutdown
    
  4. docker-desktopdocker-desktop-data 导出到指定目录

    wsl --export docker-desktop D:\SoftwareData\wsl\docker-desktop.tar
    
    wsl --export docker-desktop-data D:\SoftwareData\wsl\docker-desktop-data.tar
    
  5. 注销 docker-desktopdocker-desktop-data

    wsl --unregister docker-desktop
    
    wsl --unregister docker-desktop-data
    
  6. 重新导入 docker-desktopdocker-desktop-data 到要存放的文件夹

    wsl --import docker-desktop D:\SoftwareData\wsl\ D:\SoftwareData\wsl\docker-desktop.tar --version 2
    
    wsl --import docker-desktop-data D:\SoftwareData\wsl\ D:\SoftwareData\wsl\docker-desktop-data.tar --version 2
    

注:docker-desktop-data 默认存放路径,C:\Users\用户\AppData\Local\Docker


五、如何限制 DockerDesktop CPU、内存使用率

我们需要在 C:\Users\用户\ 目录下创建一个 .wslconfig 文件

[wsl2]
#kernel=C:\\temp\\myCustomKernel
memory=4GB
swap=4GB
processors=2

相关配置参数

keyvaluedefaultnotes
kernelstringThe Microsoft built kernel provided inboxAn absolute Windows path to a custom Linux kernel.
memorysize50% of total memory on Windows or 8GB, whichever is less; on builds before 20175: 80% of your total memory on WindowsHow much memory to assign to the WSL 2 VM.
processorsnumberThe same number of processors on WindowsHow many processors to assign to the WSL 2 VM.
localhostForwardingbooleantrueBoolean specifying if ports bound to wildcard or localhost in the WSL 2 VM should be connectable from the host via localhost:port.
kernelCommandLinestringBlankAdditional kernel command line arguments.
swapsize25% of memory size on Windows rounded up to the nearest GBHow much swap space to add to the WSL 2 VM, 0 for no swap file.
swapFilestring%USERPROFILE%\AppData\Local\Temp\swap.vhdxAn absolute Windows path to the swap virtual hard disk.

总结

以上就是本文的主要内容,本文介绍了 WSL 2,DockerDesktop 实践小技巧。本专栏后面的文章将带你认识其它的开发利器 ,敬请期待哦(*^▽^*)


声明

以上内容均来源于网络,如有错误,请多多包含。


参考文献

Docker Desktop

Docker Desktop WSL 2 backend

Configure global options with .wslconfig

Arguments for managing Windows Subsystem for Linux

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

工欲善其事必先利其器 之 DockerDesktop(下) 的相关文章

  • 对于USB Bulk通信发送0包的理解

    写Device USB驱动的时候 xff0c 当Bulk送信发送的数据长度恰好是wMaxPacketSize的整数倍时 xff0c 是否应该发送0包的问题搞得我焦头烂额 查找了好多资料 xff0c 有的说要加 xff0c 这是USB协议的一
  • upload漏洞专题

    一 upload上传绕过专题 后缀检验绕过 1 黑名单检测绕过 1 上传文件重命名 span class token comment 由于只有后缀是可控的 span 所以常见的后缀为php中 php2 php3 php4 php5 phtm
  • Pony语言学习(七)——表达式(Expressions)语法(单篇向)

    一 字面量 xff08 Literals xff09 xff08 一 xff09 Bool值 xff1a 没啥要说的 xff0c 就是true和false x1f44a xff08 二 xff09 数值 xff08 Numeric Lite
  • Pony语言学习(八):引用能力(Reference Capabilities)

    xff08 如果你有更好的翻译 xff0c 请务必联系我 我们需要和Rust术语做到翻译看齐 xff09 一 总览 xff08 特译 xff1a https tutorial ponylang io reference capabiliti
  • Pony语言学习(二):基础类型 之 Class

    写在前面的 xff1a 这次咱们来唠唠Pony的基础类型 xff0c 这里说的基础类型指的不是int string boolean float什么内置数据类型 xff0c 而是Pony中用来定义类型的几种方法 xff0c 分别是 Class
  • 匿名管道和命名管道

    进程间通信 xff08 IPC xff09 每个进程有各自不同的用户地址空间 xff0c 任何一个进程的全局变量在另一个进程中都看不到 所以进程之间要交换数据必须通过内核 xff0c 在内核中开辟一块缓冲区 xff0c 进程1把数据从用户空
  • ROS修改rosbag中话题的frame_id,以及发布坐标在Rviz中与点云融合显示

    ROS修改rosbag中话题的frame id xff0c 以及发布坐标在Rviz中与点云融合显示 读取rosbag xff0c 修改话题frame id与话题名并循环发布 span class token keyword import s
  • 定义类模板,未定义的引用

    在使用类模板的时候 xff0c 将类的申明和定义放在两个文件中 xff0c 在编译的时候出现 XXX未定义的引用 xff0c 即找不到对应的函数实现 解决办法是 xff1a 将类的定以和申明都放在一个头文件中 xff0c 这样就可以避免上述
  • It is a distutils installed project

    方法1 xff1a 方法2 xff1a 直接全局搜索对应文件 xff0c 具体包括 34 package name 34 文件夹 和 34 package name 34 egg info xff0c 找到后直接删除即可 eg sudo f
  • git将当前修改文件生成patch

    应用场景 xff1a 只想将当前文件夹中改动的文件打包成一个patch xff0c 并不想提交相应的代码 执行命令 xff1a git diff nova api openstack compute servers py nova cmd
  • OpenStack--虚拟机操作(挂起、暂停和搁置)

    1 OpenStack虚拟机三种操作 1 1 挂起和恢复 xff08 suspend和resume xff09 挂起 xff1a openstack中的挂起 xff08 suspend xff09 操作是将虚拟机的内存保存到磁盘中 xff0
  • eMMC 里 DDR52 HS200 HS400 等的含义

    eMMC 里 DDR52 HS200 HS400 这些名词指的是不同的速度 DDR52就是最高 52M clock xff0c 数据速率就是 52 x 2 61 104 HS200 就是最高 200M clock xff0c 单通道 xff
  • Libvirt的job机制3--基本原理

    在Job机制简介中介绍了在libvirt中调用接口时如何使用Job机制 xff1b 在条件变量基本原理中介绍了条件变量的一些基本原理 xff0c 这个是Job机制的基础 本文主要介绍Job机制中用到的一些函数 结构体等变量 xff0c 分析
  • libvirt初始化流程分析

    libvirtd daemon初始化流程比较复杂 xff0c 本文对代码流程进行初步分析 xff0c 可能有不对的地方 xff0c 随时会进行更新和补充 总体代码流程 main remote remote deamon c daemonCo
  • OpenStack调试方法总结

    1 利用remote pdb进行调试 下载链接remote pdb 2 0 0 py2 py3 none any whl 虚拟化文档类资源 CSDN下载 from remote pdb import RemotePdb RemotePdb
  • Compute通过Conductor访问数据库方法

    目录 方法注册 实例序列化与反序列化 conductor与数据库交互 Instance类对象与ComputeManager类对象 compute服务的worker数量 这里以instance save函数为例进行说明 方法注册 nova组件
  • oslo_messaging学习系列之二《OpenStack中使用消息队列》

    目录 消息驱动 oslo messaging模块详解 Transport Target xff08 oslo messaging target Target xff09 Server RPC Client RPC Client参数传递 消息
  • PX4日志文件分析

    FlightPlot画图软件 xff1a http www pixhawk com dev flightplot 支持的日志格式 xff1a PX4自动驾驶仪日志 xff08 px4log 由 sdlog2 生成 xff09 APM二进制日
  • 固定翼航模及四旋翼无人机基础

    目录 一 机架 二 电机参数 1 电机的尺寸和KV值 2 KV值与力 桨的关系 三 桨叶参数 1 桨叶的直径和螺距 2 桨叶选配 3 电机与桨叶搭配表 四 电池与电调 五 航模电子设备连线图解 1 固定翼整机 2 多旋翼整机 3 接收机 4
  • FreeRTOS 之五种内存分配方案(概括总结)

    一 FreeRTOS 之五种内存分配方案 Heap 1 1 在此方案中 xff0c 实现了基础版本的pcPortMalloc xff0c 而没有实现vPortFree xff0c 因此它适用于从来不会删除任务的应用 2 动态分配的内存总是确

随机推荐