【ubuntu】docker默认镜像存储路径更改,现有镜像迁移(填坑版!!)
在修改Docker默认镜像和容器存储位置中遇到的坑
·
docker 镜像默认的存储路径是系统盘,运行时也会增加系统盘内存的占用,随着镜像的增加,系统盘爆满运行速度变慢甚至系统崩溃。
流程汇总
- 查看硬盘占用
df -h
文件系统 大小 已用 可用 已用% 挂载点
tmpfs 1.6G 2.3M 1.6G 1% /run
/dev/sdc2 219G 203G 4.8G 98% /
tmpfs 7.8G 136K 7.8G 1% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
efivarfs 256K 54K 198K 22% /sys/firmware/efi/efivars
/dev/sda1 511M 6.1M 505M 2% /boot/efi
tmpfs 1.6G 128K 1.6G 1% /run/user/1000
/dev/sda2 3.6T 1.7T 1.8T 48% /media/gpp/3e9aeb8b-2940-41c6-8e36-89995757ff6a6
/dev/sdb 3.6T 3.2T 211G 94% /media/gpp/9a68876e-c08d-4b24-8389-5d41050afa2f
系统盘/dev/sdc2 占用非常多,/dev/sda2则是一个挂载的硬盘,余量充足
- 一般镜像文件存诸在
/var/lib/docker, 运行docker info命令查看,
sudo docker system df # 查看docker数据占用的存储空间,-v参数是详细列出
- 创建目标地址,
new_dir替换为你的路径
sudo mkdir new_dir
- 将原来的docker镜像文件复制到新的路径下
sudo cp -r /var/lib/docker new_dir
或者使用下面的方式,能够看到进度。
sudo rsync -a /var/lib/docker/ /home/user/docker_work/docker/
- 打开docker的配置文件,
sudo vim /etc/docker/daemon.json中添加存储路径"data-root"并保存。
{
"data-root": "new_dir",
"registry-mirrors": [
"https://docker.1ms.run",
"https://hub-mirror.c.163.com",
],
}
- 更新daemon的配置并启动docker
sudo systemctl daemon-reload
sudo systemctl restart docker
- 查看docker的信息中的路径是否为新地址,镜像存在
docker info
docker images
- 删除系统盘下的镜像及环境
sudo rm -rf /var/lib/docker/*
花一天了才填上的坑
- 按照上诉流程,在步骤6执行后,docker images 未打印出任何镜像,最后总结应该是我的目标盘挂载写在
fstab中,保证开机自动挂载
原来的挂载是这样的,原本只是觉得这个挂载点路径不简洁,还曾自己变化过。
文件系统 大小 已用 可用 已用% 挂载点
/dev/sda2 3.6T 1.7T 1.8T 48% /media/gpp/3e9aeb8b-2940-41c6-8e36-89995757ff6a6
/dev/sdb 3.6T 3.2T 211G 94% /media/gpp/9a68876e-c08d-4b24-8389-5d41050afa2f
(1)首先确认设备信息,获取设备的 UUID 和 文件系统类型(关键步骤,避免依赖 /dev/sdX 路径):
sudo blkid
(2)创建新的挂载目录,建议挂载到 /mnt 目录下(更规范的存储位置):
sudo mkdir -P /mnt/data1
(3)卸载当前挂载点
sudo umount /dev/sdb
sudo umount /dev/sda2
(4)配置开机自动挂载,编辑 /etc/fstab 文件,添加挂载配置:
sudo cp /etc/fstab /etc/fstab.bak # 备份原始文件
sudo nano /etc/fstab
(5)在文件末尾添加以下内容(根据实际 UUID 和文件系统类型修改):
# /dev/sdb -> /mnt/data1
UUID=9a68876e-c08d-4b24-8389-5d41050afa2f /mnt/data1 ext4 defaults,nofail,noatime 0 2
# /dev/sda2 -> /mnt/data2
UUID=3e9aeb8b-2940-41c6-8e36-89995757ff6a /mnt/data2 ext4 defaults,nofail,noatime 0 2
参数说明:
defaults:包含读写权限、执行权限等基本选项。
nofail:系统启动时若磁盘不存在,跳过挂载避免启动失败。
noatime:禁止记录文件访问时间,提升性能。
0 2:最后两个数字分别表示备份和磁盘检查顺序(0=不备份,2=非根分区检查)。
(6) 测试并应用配置
sudo mount -a # 挂载所有 fstab 中定义的设备
检查是否成功:
df -h | grep /mnt/data
(7)验证重启后自动挂载
sudo reboot
(8)重启后测试 docker的镜像存在。
- 安装步骤8中执行删除
/var/lib/docker的命令后无效,内存未释放。明明加了sudo 权限仍是无法删除。其实原因还是权限不够
sudo su #进入超级用户下
rm -rf /var/lib/docker/* #重新执行删除命令即可
再次查看内存占用,极度舒适
文件系统 大小 已用 可用 已用% 挂载点
tmpfs 1.6G 2.2M 1.6G 1% /run
/dev/sdc2 219G 100G 108G 49% /
tmpfs 7.8G 136K 7.8G 1% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
efivarfs 256K 54K 198K 22% /sys/firmware/efi/efivars
/dev/sdb 3.6T 3.2T 211G 94% /mnt/data1
/dev/sda2 3.6T 1.7T 1.8T 50% /mnt/data2
/dev/sda1 511M 6.1M 505M 2% /boot/efi
tmpfs 1.6G 124K 1.6G 1% /run/user/1000
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)