原因
这篇文章(【教程】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 国际许可协议进行许可。
暂无评论
要发表评论,您必须先 登录