• windows10下的docker 修改镜像位置和卷内容


    一 Docker Desktop(WSL2)修改镜像存储位置

    原文 https://blog.csdn.net/fleaxin/article/details/109812090

    问题
    随着pull的镜像增多,C盘空间被很快耗尽。

    原因
    因为我使用的是WSL2的版本,所以docker desktop在安装的时候创建两个wsl子系统,使用命令wsl -l -v --all:

    docker-desktop是存放程序的,docker-desktop-data是存放镜像的,这两个wsl子系统都是默认放在系统盘的。

    地址栏 wsl$docker-desktop 程序路径
    地址栏 wsl$docker-desktop-data 数据路径
    wsl$docker-desktop-dataversion-pack-datacommunitydockervolumes 卷的位置

    解决
    删除所有的image/container/wsl/hyperv数据:

    导出wsl子系统镜像:

    wsl --export docker-desktop docker-desktop.tar
    wsl --export docker-desktop-data docker-desktop-data.tar

    删除现有的wsl子系统:

    wsl --unregister docker-desktop
    wsl --unregister docker-desktop-data

    重新创建wsl子系统:

    wsl --import docker-desktop d:your-install-path docker-desktop.tar
    wsl --import docker-desktop-data d:your-install-path docker-desktop-data.tar

    重新运行docker desktop,然后pull一个镜像,C盘不会变大了。

    二 WSL 2 方式)数据卷存放位置及如何访问
    原文 https://blog.csdn.net/u013568383/article/details/113888776
    https://www.cnblogs.com/xhznl/p/13184398.html

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

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

    [wsl2]
    memory=10GB
    swapFile=D:LocalCacheswsl2swap.vhdx
    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、删除所有容器

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

    docker ps -a
    或者

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

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

    2、退出Docker Desktop

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

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

    wsl --list --verbose
    命令可以查看到,实例效果如下:

    D:work>wsl --list --verbose
    NAME STATE VERSION
    docker-desktop Stopped 2
    Ubuntu-18.04 Stopped 2
    docker-desktop-data Stopped 2
    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发行版

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

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

    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的修改时间,如果修改时间是最新时间,就说明配置成功。


    作者:过错
    出处:http://www.cnblogs.com/wang2650/
    关于作者:net开发做的久而已。十余年时光虚度!
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。如有问题,可以邮件:wang2650@163.com  联系我,非常感谢。

  • 相关阅读:
    Project Euler 28 Number spiral diagonals
    nrm是什么?以及nrm的安装与命令
    asar 如何解密加密?electron 的 asar 的具体用法
    ARDUINO 积木式编辑器整理
    关于Nodejs开发桌面应用。NW.js 和 Electron 优缺点分析对比
    webkit、cef、nwjs、electron、 miniblink浏览器内核优缺点
    cef开启摄像头和录音
    连接AWS Ubuntu服务器
    使用cnpm install提示package not found
    centos7 升级内核
  • 原文地址:https://www.cnblogs.com/wang2650/p/15508306.html
Copyright © 2020-2023  润新知