大伙儿晚上今天得空,把我这两天折腾的一个小事儿给大伙儿说道说道。事儿不大,就是给我那个“新保姆”系统更新了一下地址。这里说的“新保姆”,不是咱家里请的那个阿姨,是我自己瞎鼓捣的一个跑着各种服务的小主机,之前用的是那个叫啥ARPL的引导,装了个群晖DSM在上面跑,挺方便的。
为啥要更新地址?
起因是这样的,我这个“新保姆”系统装好之后,一开始没太注意,好多东西,特别是Docker容器那些玩意儿产生的数据,都默认给我塞系统盘里了。时间一长,系统盘空间就有点紧张,而且我寻思着,这些经常读写的数据老在系统盘上折腾,也不是个事儿,万一哪天系统盘出点小毛病,这些数据也跟着悬。我还有块闲置的硬盘,容量大,速度也还行,就想着把这些数据的“家”给搬过去。
动手前的准备
说干就干!第一步,咱肯定不能上来就瞎搞。 我先把Docker里跑着的几个重要容器给停了,像是什么Jellyfin,Home Assistant这些。然后,把它们的数据目录大致看了一下,心里有个数,知道要迁移哪些东西。
我参考了一下网上一些大佬的做法,主要是针对Docker的数据存储位置。之前我的Docker数据根目录,就是那个`–data-root`参数指定的,好像是默认路径,具体在哪儿我也记不清了,反正是在系统盘里。
小编温馨提醒:本站只提供游戏介绍,下载游戏推荐89游戏,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区
开始迁移和修改配置
接下来就是实际操作了。
- 创建新家:我在我那块大硬盘上,比如路径是`/mnt/Storage1/`,新建了一个专门给Docker用的文件夹,就叫`dockerdata`,简单明了。
- 搬家:然后就是把旧的Docker数据整个复制到这个新的`dockerdata`文件夹里。我用的是`cp -a`命令,这样能保证权限啥的都原封不动地拷过去。这个过程得等一会儿,毕竟数据量也不小。
- 修改Docker启动配置:这是最关键的一步。我这个系统是用systemd来管理服务的,所以得找到Docker服务的配置文件。一般路径可能在`/etc/systemd/system/*`或者类似的地方,也可能在`/usr/lib/systemd/system/`下面有个`*`文件,然后我们自己再覆盖一个到`/etc/systemd/system/`。得找到那个`ExecStart`开头的行。
我找到那一行,它原来大概是这样的:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/*
重点来了,我得给它加上--data-root
参数,指向我新建的那个文件夹。我把它修改成了这样:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/* --data-root /mnt/Storage1/dockerdata
就是把后面那段--data-root /mnt/Storage1/dockerdata
给加上去。
收尾工作和检查
改完配置文件之后,得先保存退出。然后,因为修改了systemd的服务配置,所以得让systemd重新加载一下所有配置文件。我执行了下面这条命令:
sudo systemctl daemon-reload
这条命令执行完,系统就知道Docker的启动参数变了。紧就是重新启动Docker服务了:
sudo systemctl restart docker
启动之后,我赶紧用docker ps -a
看了看,之前停掉的容器是不是都能正常启动,数据是不是还在。又进到几个容器里看了看,比如Jellyfin的媒体库,Home Assistant的配置,都还在,没丢!这心里就踏实了。
我又看了看我那个新的`/mnt/Storage1/dockerdata`文件夹,里面确实生成了新的日志文件和一些活动迹象,说明Docker确实把数据都写到新地方去了。原来的那个旧的Docker数据目录,我观察了两天,确认没问题之后,就可以考虑删掉了,又能释放点系统盘空间。
一点小总结
整个过程不复杂,关键就是细心,特别是修改配置文件和迁移数据的时候。这么一折腾,我那个“新保姆”系统的数据盘分离就搞定了,以后系统盘清爽多了,也不用太担心Docker把系统盘撑爆了。感觉良
好了,今天就先分享到这儿,算是个小小的实践记录。希望能给有类似需求的朋友一点点参考。下次再有啥折腾的,再来跟大伙儿唠!