• Windows 10 将 Docker Desktop for Windows(WSL 2 方式)文件存储移出系统盘放置到其它目录


    背景:

    以WSL2方式使用Docker Desktop for Windows确实带来了更好的体验,但同时也带来新的问题。其中最典型的问题就是系统盘空间的占用越来越大。而且还有典型的内存问题。

    最初没有注意,也是因为没有找到最根本的解决办法,采用下面的配置粗略的应付了一下:

    1 [wsl2]
    2 memory=10GB
    3 swapFile=D:\LocalCaches\wsl2\swap.vhdx
    4 localhostForwarding=true

    注:在当前系统的用户下,新建.wlsconfig文件,在其中配置以上代码。

    实际上本质问题没有解决。有一个码友来询问这个问题,才认认真真的考虑如何解决。

    说明:

    默认情况下,Docker Desktop for Window会创建如下两个发行版(distro):

    • docker-desktop
    • docker-desktop-data

    如果访问%LOCALAPPDATA%/Docker/wsl目录,就可以看到两个文件夹,同时每个文件夹中都会有一个vhdx文件。

    %LOCALAPPDATA%/Docker/wsl就是当前登录用户的AppDataLocal目录,假设当前登录的用户为Administrator,那么这个目录就是C:UserAdministratorAppDataLocalDockerwsl

    • data/ext4.vhdx 是被docker-desktop-data 发行版使用
    • distro/ext4.vhdx 是被 docker-desktop 发行版使用

    docker-desktop-data 是被用来存储docker images 以及相关的数据。因此,它的大小会随着使用逐步增长,因此导致系统盘空间不足。

    vhdx文件最大支持256G,超出这个大小将会出错。参见:官方说明

    解决步骤

    1、删除所有容器

    可以使用命令,查看所有容器:

    1 docker ps -a

    或者

    打开Docker Desktop for Window 的Dashboard界面,将该界面中的所有内容删除。

    这一步很重要,如果不这样操作,进行后续操作的时候,要么提示网络相关错误:cannot create a specific network,要么导入完成之后,vhdx文件会消失。

    2、退出Docker Desktop

    3、在控制台中,使用下面命令,关闭所有发行版

    wsl --shutdown

    4、检查是否所有发行版都已经关闭。

    wsl --list --verbose

    命令可以查看到,实例效果如下:

    1 D:work>wsl --list --verbose
    2 NAME                   STATE           VERSION
    3 docker-desktop         Stopped         2
    4 Ubuntu-18.04           Stopped         2
    5 docker-desktop-data    Stopped         2
    6 D:work>

    5、备份已有image数据

    通过下面命令,将已有的image数据,以tar格式备份已有数据到指定目录。目录根据自己实际情况指定。

    wsl --export docker-desktop-data E:docker-desktopdocker-desktop-data.tar

    docker-desktop-data名字,就是上一步中,列举出来的Docker Desktop存储image的发行版

    6、注销当前的docker-desktop-data发行版

    1 wsl --unregister docker-desktop-data

    该命令执行完成之后,再次使用wsl --list --verbose命令查看,docker-desktop-data就已经不在了。

    7、重新导入备份的docker-desktop-data

    1 wsl --import docker-desktop-data E:docker-desktopdata E:docker-desktopdocker-desktop-data.tar --version 2
    • docker-desktop-data Docker Desktop存储image的发行版
    • 第二个路径,即指定vhdx新的放置目录。指定到目录级别即可,不用指定vhdx名。
    • 第三个路径,指定第5步中备份的数据。

    8、重新运行Docker Desktop

    Docker Desktop 运行成功之后,查看新目录中的vhdx的修改时间,如果修改时间是最新时间,就说明配置成功。

    参考资料:

    (1):https://dev.to/kimcuonthenet/move-docker-desktop-data-distro-out-of-system-drive-4cg2
    (2):https://docs.microsoft.com/en-us/windows/wsl/compare-versions#understanding-wsl-2-uses-a-vhd-and-what-to-do-if-you-reach-its-max-size

  • 相关阅读:
    java操作生成jar包 和写入jar包
    jboss配置jndi连接池
    windows 域的LDAP查询相关举例
    LDAP error Code 及解决方法
    HDU 6417
    CF1299D Around the World
    codechef Chef and The Colored Grid
    Educational Codeforces Round 82 (Rated for Div. 2)
    CF1237F Balanced Domino Placements
    CF1254E Send Tree to Charlie
  • 原文地址:https://www.cnblogs.com/yanglang/p/13518449.html
Copyright © 2020-2023  润新知