Abel'Blog

我干了什么?究竟拿了时间换了什么?

0%

docker-默认硬盘设置

如果你的 Docker 已经运行了一段时间,并且存储在 /var/lib/docker 目录下的镜像、容器、网络、builder 等数据需要完整迁移到 /data/docker,你可以按照以下步骤安全地完成迁移,而不会丢失任何数据。

如果全新部署一套服务器的时候,我们要如何来处理这样的情况。
我们一般都会购买一个可扩展的硬盘,挂载到/data/上。
是不是安装完docker就去设置这个选项。

完整迁移 Docker 数据到 /data

步骤 1:停止 Docker

为了避免数据损坏,首先停止 Docker 服务:

sudo systemctl stop docker

步骤 2:复制现有数据到新目录

1.    创建目标目录

sudo mkdir -p /data/docker

2.    使用 rsync 复制数据(rsync 保留权限并支持增量同步)

sudo rsync -aAX /var/lib/docker/ /data/docker/

这个命令会确保 /var/lib/docker/ 下的所有数据,包括镜像、容器、卷、网络等完整复制到 /data/docker/。

步骤 3:修改 Docker 配置

1.    编辑 daemon.json

sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json

添加或修改以下内容:

{
“data-root”: “/data/docker”
}

步骤 4:重启 Docker 并验证

1.    重新启动 Docker

sudo systemctl restart docker

2.    检查数据是否迁移成功

docker info | grep “Docker Root Dir”

确保输出:

Docker Root Dir: /data/docker

3.    列出 Docker 容器,确保它们仍然可用

docker ps -a

你的所有容器、镜像、网络、builder 都应该保持原样。

步骤 5(可选):删除旧数据

如果确认一切正常,你可以删除旧数据释放空间:

sudo rm -rf /var/lib/docker.bak

如果 /data 是新挂载的硬盘

如果 /data 是新硬盘,你可以先格式化并挂载:

sudo mkfs.ext4 /dev/sdX # 请替换 /dev/sdX
sudo mount /dev/sdX /data
echo “/dev/sdX /data ext4 defaults 0 2” | sudo tee -a /etc/fstab

然后执行上述迁移步骤。

结论

✅ 这种迁移方式可以安全地保留现有的 Docker 容器、镜像、builder 数据,而不会影响运行环境。
🚀 如果你担心风险,可以先备份 /var/lib/docker/,然后再执行迁移。

在全新部署服务器时,如果你已经计划好使用 /data 作为 Docker 的存储目录,那么你可以在安装 Docker 之后立即进行配置,而无需担心迁移数据的问题。以下是推荐的流程:

💡 全新部署 Docker 并将数据存储在 /data

步骤 1:挂载 /data 磁盘

1.    查看新硬盘

lsblk

假设新磁盘是 /dev/sdb,则继续执行以下步骤。

2.    格式化磁盘

sudo mkfs.ext4 /dev/sdb

3.    挂载磁盘

sudo mkdir -p /data
sudo mount /dev/sdb /data

4.    设置开机自动挂载

echo “/dev/sdb /data ext4 defaults 0 2” | sudo tee -a /etc/fstab

步骤 2:安装 Docker

如果尚未安装 Docker,可使用以下命令:

curl -fsSL https://get.docker.com | sudo bash

或者使用官方的方式:

sudo apt-get update
sudo apt-get install -y docker.io

步骤 3:配置 Docker 存储目录

1.    创建 Docker 配置文件

sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json

2.    添加以下内容

{
“data-root”: “/data/docker”
}

3.    保存并退出 (Ctrl+X → Y → Enter)

步骤 4:启动 Docker

sudo systemctl restart docker
sudo systemctl enable docker

步骤 5:验证

1.    检查 Docker 是否使用 /data/docker

docker info | grep “Docker Root Dir”

输出应类似:

Docker Root Dir: /data/docker

2.    运行测试容器

docker run —rm hello-world

确保 Docker 正常运行,并且 /data/docker 目录下已经存储了容器数据。

💡 结论
• 是的,全新安装 Docker 后,应该立即设置 data-root,这样 Docker 就不会默认存储在 /var/lib/docker 了。
• 如果 /data 是新挂载的硬盘,需要提前格式化并挂载,确保 /etc/fstab 里有对应的自动挂载项。
• 这样做的好处是,你的容器、镜像、网络等所有 Docker 数据都可以存放在 /data/docker,以后可以方便地扩展存储。 🚀

power by ChatGPT