Ubuntu Docker 文件迁移到挂载的硬盘里(二)

原因

这篇文章(【教程】Ubuntu Docker 文件迁移到挂载的硬盘里)之前有个缺点,就是更新Ubuntu系统时,配置项会丢失,导致容器服务没了,要重新添加配置项。添加了配置项重启dockers,也不起作用了。

2024-05-26:【教程】Ubuntu Docker 文件迁移到挂载的硬盘里 这篇文章无效,只需要改/etc/docker/daemon.json配置文件

这次则改用添加/etc/docker/daemon.json文件夹添加data-root配置项来解决上面的问题,然后我用ChatGpt写了一个脚本:

定时检查/etc/docker/daemon.json文件存在不存在,如果不存在则添加daemon.json文件,然后写入下面的配置项

{
  "data-root": "/mnt/docker_images"
}

如果/etc/docker/daemon.json存在,data-root也存在,则检查data-root的值,如果值正确则不操作。

如果data-root不正确,则自动更新data-root则为正确的值,data-root不存在则可以自动添加"data-root": "/mnt/docker_images",过程不超过5分钟,只能说是ChatGpt太厉害了,真的很牛逼。

下面就是第二种Ubuntu Docker 文件迁移到挂载的硬盘里的方法

步骤

1、创建/etc/docker/daemon.json文件夹

vim /etc/docker/daemon.json

2、daemon.json文件写入data-root配置项

{
  "data-root": "/mnt/docker_images"
}

/mnt/docker_images就是外挂硬盘的路径

3、重启dockers

sudo systemctl stop docker.socket
sudo systemctl daemon-reload
sudo systemctl start docker
sudo systemctl status docker

4、添加脚本

ChatGpt写的脚本,还有注释,太厉害了。👍

#!/bin/bash

# 设置保存Docker镜像的目录
DOCKER_IMAGES_DIR="/mnt/256G/docker_data"

# 如果文件不存在,则创建并写入配置信息
if [ ! -f /etc/docker/daemon.json ]; then
    echo '{ "data-root": "'"$DOCKER_IMAGES_DIR"'" }' | sudo tee /etc/docker/daemon.json > /dev/null
    sudo systemctl restart docker
else
    # 如果文件存在,检查"data-root"配置项
    if grep -q '"data-root"' /etc/docker/daemon.json; then
        # 如果"data-root"配置项存在,检查其值是否等于$DOCKER_IMAGES_DIR
        if grep -q "\"data-root\": \"$DOCKER_IMAGES_DIR\"" /etc/docker/daemon.json; then
            # 如果值相等,什么都不做
            :
        else
            # 如果值不等,则更新"data-root"的值
            sudo sed -i 's#"data-root": ".*"#"data-root": "'"$DOCKER_IMAGES_DIR"'"#' /etc/docker/daemon.json
            sudo systemctl restart docker
        fi
    else
        # 如果"data-root"配置项不存在,则添加它
        echo '{ "data-root": "'"$DOCKER_IMAGES_DIR"'" }' | sudo tee -a /etc/docker/daemon.json > /dev/null
        sudo systemctl restart docker
    fi
fi

5、配置cron定时任务

0 20 * * * /path/to/script.sh



知识共享许可协议本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。

相关推荐

为知笔记 docker 更新

如何更新为知笔记 docker 本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。

暂无评论

目录展开