macos中docker的存储路径问题

本文聚焦macOS中docker的存储路径问题。介绍了docker在macOS中的架构,指出与Linux系统不同,macOS下docker镜像存储于QEMU虚拟机的文件中。明确该虚拟机才是docker容器的宿主机,还说明了可通过screen命令登录虚拟机,以及虚拟机与macOS操作系统的目录共享情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

macos中docker的存储路径问题

参考:https://blog.donghy.cn/20200215133.html

docker 在 macOS 中的架构:

在macOS中,docker的实现跟在其它Linux系统中略有不同,在其它Linux系统中,操作系统本身就是docker容器的宿主机,docker镜像都是直接存储在宿主机本身的文件系统中,比如我们通过docker info命令可以看到docker的根目录是:

$ docker info|grep "Docker Root Dir" Docker Root Dir: /var/lib/docker

但是在macOS下,我们直接查看这个目录,其实是根本不存在的。

$ ls /var/lib/docker ls: /var/lib/docker: No such file or directory

Docker宿主机是谁

那么这个目录到底在哪里?实际上是在一个QEMU虚拟机中,当我们在macOS中安装完docker并启动,就是启动了一个虚拟机,这个虚拟机的整个内容全部都在一个文件里,可以在docker程序属性界面中看到这个文件的路径,比如在我的机器上,路径就是(<YourUserName>替换为你的mac电脑的用户名)/Users/<YourUserName>/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2,该文件通常比较大,特别是安装了多个docker镜像之后,会轻易占用到数十GB的空间。
那么,我们是否可以登录这个虚拟机来确认这点呢?使用macOS自带的screen命令可以登录该台虚拟机。如下,可以看到这是一个拥有非常新的Linux 4.9.38版本内核的虚拟机,在这个虚拟机中才有/var/lib/docker目录,只有2颗CPU,总共有2GB内存。

$ screen /Users/Kamus/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty

/ # uname -a Linux moby 4.9.38-moby #1 SMP Wed Jul 26 10:02:46 UTC 2017 x86_64 Linux / # hostname moby

/ # ls /var/lib/docker aufs        containers  network     swarm       tmp-old     volumes
builder     image       plugins     tmp         trust

/ # cat /proc/cpuinfo|grep "processor" processor       : 0 processor       : 1 / # cat /proc/meminfo |grep "MemTotal" MemTotal: 2047040 kB

在screen的窗口按组合键control+a d(先按control+a,再按d)可以暂时dettach出这个screen,screen -r可以重新打开窗口。更多的screen命令,可以自行man screen来查看。
所以现在我们可以明确一个概念,macOS本身并不是以后将运行的docker容器的宿主机,而这个Linux虚拟机才是真正的宿主机。这台机器的主机名是moby,这正是docker项目社区版的名称。

Docker宿主机与macOS操作系统的目录共享

由于如下共享文件夹功能的存在,在这个虚拟机中可以访问并更新macOS操作系统本地的目录。
我们还是在screen中看一下这些共享目录的情况。

/ # df -h|grep osxfs osxfs 465.1G 324.1G 140.7G 70% /private osxfs 465.1G 324.1G 140.7G 70% /tmp
osxfs 465.1G 324.1G 140.7G 70% /Volumes
osxfs 465.1G 324.1G 140.7G 70% /Users
/ # cd /Users /Users # ls Guest   Kamus Shared

可以看到,确实macOS操作系统中的目录在虚拟机中是可以直接访问的,而且更方便的地方是,在虚拟机中自动挂载的目录路径跟macOS中的路径是完全相同的,比如我的个人主目录无论是在macOS中还是在这个虚拟机中,都是/Users/Kamus。

<think>好的,用户问的是如何在Docker Desktop中配置存储路径(Disk image location)。首先,我需要回想一下Docker Desktop的存储配置方法。记得在Windows和Mac上,Docker使用虚拟机来运行容器,所以存储路径可能和一般的文件系统不同。 接下来,用户可能是在使用Windows或者Mac系统,所以需要分别说明两个平台的操作步骤。对于Windows,Docker Desktop通常使用Hyper-V,而Mac使用HyperKit。存储路径的修改在两种系统下步骤类似,但具体位置可能不同。 记得在Docker Desktop的设置里,高级选项中可以调整磁盘镜像的位置。不过需要注意,直接移动磁盘镜像可能会导致数据丢失,所以需要提醒用户先备份。另外,修改路径后需要重启Docker服务,确保配置生效。 另外,用户可能遇到权限问题,或者路径不存在的情况,需要指导他们正确创建目录并设置权限。还可能有一些用户不知道如何到当前磁盘镜像的位置,所以需要提供查看当前配置的方法,比如通过Docker info命令。 还需要考虑用户可能想了解如何通过命令行或者配置文件修改路径,比如在Mac上使用~/.docker/daemon.json文件,或者在Windows的PowerShell中执行命令。不过一般来说,图形界面操作更直观,适合大部分用户。 另外,需要注意不同版本的Docker Desktop可能会有界面差异,所以步骤要尽量通用。同时,提醒用户在修改后重新导入镜像和容器,或者重新创建,因为移动磁盘镜像后原有的数据可能不会自动迁移,需要手动处理。 最后,生成相关问题时要覆盖常见的问题,比如移动路径后的数据迁移、错误处理、不同系统的差异,以及如何检查当前配置是否生效等。这样用户遇到其他相关问题也能到答案。</think>### 如何在Docker Desktop中配置存储路径(Disk image location) #### 步骤说明(Windows/macOS通用) 1. **关闭Docker Desktop** 右键点击系统托盘/菜单栏中的Docker图标,选择`Quit Docker Desktop`,确保所有相关进程已终止。 2. **定位当前磁盘镜像文件** Docker默认存储路径如下: - **Windows**: `C:\Users\<用户名>\AppData\Local\Docker\wsl\data\ext4.vhdx` - **macOS**: `~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw` 3. **迁移磁盘镜像文件** - 将文件`ext4.vhdx`(Windows)或`Docker.raw`(macOS)复制到新路径(如`D:\docker\ext4.vhdx`或`/Volumes/External/Docker.raw`)。 - **注意**: 确保目标目录有足够空间且权限可读写[^1]。 4. **修改Docker配置** - **Windows(PowerShell)**: ```powershell wsl --shutdown wsl --import docker-desktop-data "D:\docker" "D:\docker\ext4.vhdx" --version 2 ``` - **macOS(终端)**: 编辑配置文件: ```bash echo '{"diskPath":"/Volumes/External/Docker.raw"}' > ~/.docker/daemon.json ``` 5. **重启Docker Desktop** 重新启动后,Docker将自动加载新路径下的磁盘镜像。 #### 验证配置 执行以下命令确认存储路径已更新: ```bash docker info | grep "Docker Root Dir" ``` 输出应显示新路径,例如: ```plaintext Docker Root Dir: /mnt/d/docker ``` #### 注意事项 - **数据迁移风险**: 直接移动文件可能导致镜像/容器丢失,建议提前备份[^2]。 - **性能影响**: 若新路径位于外置硬盘,I/O性能可能下降。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值