【Docker】更改 image 存储位置

「填坑」在windows系统下安装Docker Desktop后迁移镜像位置 (baidu.com)

大家好,本文是为了填前两天写的一篇文章《【图文教程】Windows11下安装Docker Desktop》。这篇文章有个坑,当时凯哥忘了写上。今天就把这个坑给填补上。什么坑呢?就是默认安装的镜像是在C盘下的。先来看看看迁移之前C盘情况:

先说明:Cpan 本来还有一二十个GB的空间,然后运行docker之后,看到C盘磁盘空间刷刷的往下掉,才突然想起安装WSL的时候,有个坑忘了填了。

事情起因

在windows下安装Docker Desktop之后,默认是安装在C盘的,默认的镜像文件位置是在C盘下的用户名下的\AppData\Local\Docker\wsl

比如凯哥的:

C:\Users\kaigejava\AppData\Local\Docker\wsl

下面有两个文件夹。

我们来看看现在这两个文件夹的大小:

竟然占用了10GB的磁盘空间,在对C盘来说,太浪费了。我们要这两个文件夹迁移到其他盘符中,具体操作如下:

一:将镜像导出

罗列出现在在使用WSL的。在CMD命令窗口执行

wsl --list -v

可以看到有两个 docker 相关的在运行。我们需要先关闭。

  1. 在电脑桌面的右下角点击 Docker Desktop 图标退出当前应用;

  2. 关闭WSL。执行命令是:

    wsl --shutdown
    
  3. 查看当前WSL运行情况。使用的命令还是:
    wsl --list -v
    

    .我们可以看到 STATE 都已经是 Stopped 的了。如下图:

4:导出镜像并压缩为tar.注意:导出的路径要提前创建好,不然执行命令会报错的。执行命令公式:

wsl --export docker-desktop-data  # 导出后存放的文件路径

比如凯哥导出后存放文件目录为:D:\

所以凯哥导出 doceker-desktop、docker-desktop-data 及 ubuntu 命令如下:

wsl --export docker-desktop D:\docker-desktop.tar
wsl --export Ubuntu D:\Ubuntu.tar
wsl --export docker-desktop-data D:\docker-desktop-data.tar

说明:如果文件比较大的话,导出需要耗费一些时间。耐心等待导出完成即可。

二:注销原来的docker镜像相关的。

使用命令公式:

wsl --unregister 需要注销的

套用公式,可以得到凯哥需要注销的命令为:

# 注销原来的 Docker 镜像
wsl --unregister docker-desktop-data
wsl --unregister Ubuntu
wsl --unregister docker-desktop

三条命令都执行完成之后,就注销了。注销之后,我们看看C盘磁盘空间:

发现C盘少了10G左右。

三:我们将导出的Docker镜像在导入到wsl,并设置挂载的文件目录

使用的命令公式为:

wsl --import <分配的名字> <本地保存路径><文件名>

套用公式,我们可以得到凯哥需要导入的三条命令:

wsl --import docker-desktop D:\Docker\distro D:\docker-desktop.tar
wsl --import docker-desktop-data D:\Docker\data D:\docker-desktop-data.tar

需要注意:这两个不能在同一个文件夹中。如果在同一个文件夹中,在执行完第一条命令后,接着执行第二条命令会提示:提供的安装位置已经在使用中。 会有如下图的错误:

其实这个也很好理解。因为在两个文件在C盘的时候,就是两个不同的文件夹。所以,在这里,我们也使用两个不同文件夹来区分就可以了。

执行完成之后,我们使用 wsl --list -v,查看是否成功。如下图:

可以看到,都已经导入成功。接下来,重启Docker Desktop即可。


windows版本docker修改镜像存储位置 (360doc.com)

1.WSL2方式安装的docker

WSL2方式安装的docker,镜像数据默认存放在C盘,且客户端无法直接修改,此时,可以通过如下步骤来修改镜像存储位置。

#WSL2方式切换docker目录
# 查看docker状态
wsl -l -v --all
# 导出WSL子系统镜像
wsl --export docker-desktop "D:\Docker\wsl\distro\docker-desktop.tar"
wsl --export docker-desktop-data "D:\Docker\wsl\data\docker-desktop-data.tar"
# 注销现有的wsl
wsl --unregister docker-desktop
wsl --unregister docker-desktop-data

# 重新创建wsl系统
wsl --import docker-desktop "D:\Docker\wsl\distro" "D:\Docker\wsl\distro\docker-desktop.tar" --version 2
wsl --import docker-desktop-data "D:\Docker\wsl\data" "D:\Docker\wsl\data\docker-desktop-data.tar" --version 2

2.Hyper-v方式安装的docker

Settings -> Resources -> Advanced -> Disk image location,如下图所示:

发表评论