docker文件夹迁移

多人使用一台服务器,每个人新建一个docker,而docker默认挂载在根目录下,久而久之,根目录所在的磁盘就撑爆了。因此最好的方式或者说不得不做的方式就是修改docker挂载的磁盘。在此过程中踩了不少坑,提示一些需要注意的地方。一定要注意文件的备份,避免文件丢失
一开始参考的内容是博客 1,该博客提供三种方式。其中用软链接的方式即可。这主要是因为其余两种方式会涉及到修改配置文件/etc/docker/daemon.json,根据2中介绍,配置文件中具体内容取决于具体的ubuntu版本或者kernel版本,来决定配置方式使用用data-root还是graph,因此不如使用软链接的方式直接有效,而且使用软链接的方式也配置成功,因此推荐软链接的方式。

首先,使用管理员权限

su

停止docker运行

systemctl stop docker

docker默认路径是 /var/lib/docker3,其中/var/lib文件夹的作用是存放应用程序运行时需要的数据,往往是持久性数据
在新目录下创建文件夹/data/docker/
使用同步命令将数据同步到文件夹下。

rsync -av --progress /var/lib/docker/* /data/docker/

这个步骤要格外注意,因为一不注意就会造成文件丢失。这里绝对不推荐使用mv命令。
首先,mv命令其实是cp+rm的组合,如果过程中存在传输中断的现象,会不清楚到底有没有文件丢失,与其使用mv,不如分解使用,先使用cp做好文件备份,然后使用rm删除文件。因此,mv的最佳用途是重命名文件;
其次,对于这种大文件传输,使用rsync配合–progress参数可以清楚看到文件的传输速度,对用户比较友好,还支持点断续传。
需要强调的是,对于数据迁移来说,一定要做好文件的备份安全工作。
后面建立软连接

ln -s /var/lib/docker /data/docker

之后,重启docker服务

systemctl start docker.service

如果出现# Job for docker.service failed because the control process exited with error code错误,通过执行命令journalctl -xe4,查看具体报错
验证是否迁移到新的目录

docker info | grep Docker

经以上步骤,应该可以成功。
如果是采用修改配置文件的方式,此处有一些提醒的地方。
配置文件为/etc/docker/daemon.json,其中/etc文件夹是存放linux配置文件的地方
修改完配置文件后,需要执行

systemctl daemon-reload

然后执行重启docker命令。
如果 出现

failed to start daemon: error initializing graphdriver: /nvme/docker contains several valid graphdrivers: overlay2, devicemapper; 

可以通过在配置文件中添加以下内容解决

	"storage-driver":"overlay2"

更改后文件内容

{
    "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
        }
    },
   "storage-driver":"overlay2"
}

要注意json文件的格式以及","的使用

参考网站


  1. # 三种方法修改docker的默认存储位置 ↩︎

  2. # 修改Docker默认镜像和容器存储位置(超详细!!! ↩︎

  3. # docker存储目录详解 ↩︎

  4. # 解决Docker服务启动失败:“Job for docker.service failed because the control process exited with error code” ↩︎

在关闭ext4.vhdx之前,您需要确保已经停止了任何正在运行的Docker容器。如果您有正在运行的容器,请使用以下命令停止它们: ``` docker stop <container_name> ``` 接下来,您可以按照以下步骤迁移Docker文件夹: 1. 打开PowerShell或命令提示符,并输入以下命令以停止Docker服务: ``` Stop-Service docker ``` 2. 确认Docker服务已停止。您可以通过在PowerShell或命令提示符中输入以下命令来检查服务状态: ``` Get-Service docker ``` 如果服务状态是“已停止”,则可以继续进行下一步。 3. 移动Docker文件夹。默认情况下,Docker文件夹位于C:\ProgramData\Docker目录下。您可以将该文件夹复制到新位置。 4. 打开Docker配置文件(daemon.json)。您可以在C:\ProgramData\Docker\config目录下找到该文件。使用任何文本编辑器打开该文件。 5. 在配置文件中,找到“data-root”属性,并将其值更改为新位置的路径。例如,如果您将Docker文件夹移动到D:\Docker目录下,则应将该属性更改为: ``` "data-root": "D:\\Docker" ``` 6. 保存并关闭配置文件。 7. 启动Docker服务。在PowerShell或命令提示符中输入以下命令: ``` Start-Service docker ``` 8. 检查Docker服务是否已启动。您可以使用以下命令检查服务状态: ``` Get-Service docker ``` 如果服务状态为“正在运行”,则表示您已成功迁移Docker文件夹。 请注意,如果您使用的是Docker桌面版,则无需执行上述步骤。Docker桌面版会自动管理Docker文件夹
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值