本文共 1695 字,大约阅读时间需要 5 分钟。
Docker数据目录配置说明
Docker将镜像、运行中的容器及持久卷数据存储在系统驱动器上的单个共享目录根目录中。如果您希望将Docker对象(如容器)通过U盘或其他外部存储设备传输,需要为其分配个性化存储空间(即重定向数据路径)。
本文适用于Linux系统的Docker引擎以及Windows和Mac上的Docker桌面环境。为了实现数据目录的个性化设置,您需要找到对应平台的Docker配置文件daemon.json的位置。
在不同平台上,Docker配置文件的位置如下:
/etc/docker/daemon.json%programdata%\docker\config\daemon.json~/Library/Containers/com.docker.docker/Data/database/com.docker.driver.amd64-linux/etc/docker/daemon.json对于Windows和Mac用户,Docker推荐通过界面操作配置文件,而非手动编辑文本文件。您可以进入Docker桌面界面,进入偏好设置,选择“Docker引擎”下的“编辑文件”进行配置。
Docker数据目录的位置由daemon.json文件中的data-root参数控制。旧版本(版本早于17.06)采用图形界面配置。您可以通过运行docker version命令查看当前Docker版本信息。
在daemon.json文件中查找或添加data-root参数,并将所需的目录路径设置为其值。以下是一个Linux示例,展示了如何将Docker数据存储到安装在文件系统中的外部驱动器:
{ "data-root": "/mnt/docker-data"} 修改配置后,您需要重启Docker守护进程。具体操作如下:
sudo service docker restart
对于Windows和Mac用户,Docker Desktop需要通过退出后重新启动以应用更改。此外,若希望保留现有数据,请确保将当前数据目录的内容复制到新路径,否则将无法访问以前创建的容器和图像。以下命令可用于将现有数据复制到新路径:
sudo rsync -aSv /var/lib/docker/ /mnt/docker-data
在不重启守护进程的情况下,可以通过创建从/var/lib/docker到新位置的符号链接来实现数据目录的迁移。这种方法适用于主机空间不足或无法重启Docker服务的情况。
具体操作步骤如下:
sudo rsync -aSv /var/lib/docker/ /mnt/docker-data
/var/lib/docker指向目标位置:sudo ln -s /mnt/docker-data/ /var/lib/docker
请注意:此方法仅适用于不影响写入数据的场景。如果在复制过程中存在新数据写入,可能导致数据不一致。
定制数据目录后,所有镜像、容器、插件、Swarm配置、卷以及Docker构建缓存数据都会被重新存储到新路径。因此,选择一个性能优越的存储位置至关重要。若不需要所有数据类型,请考虑清理冗余资源或将未使用镜像推送至中央Registry,以释放主机资源。
您也可以通过在启动守护程序时传递--data-root标志来临时使用不同的数据目录。这可用于数据目录切换或运行干净实例:
sudo /usr/bin/dockerd --data-root /mnt/docker-data
此标志将忽略daemon.json文件中的设置,您的配置文件将保持不变,以便后续恢复。
总结:Docker将所有数据存储在/var/lib/docker目录树中,包括镜像、容器及卷等。通过修改daemon.json文件或使用--data-root标志,您可以自定义Docker数据目录。请注意,数据目录更改会导致现有数据无法访问,除非已复制到新路径。
转载地址:http://bnpfk.baihongyu.com/