Docker文件迁移到TF卡或者U盘,最大限度减少空间占用

14 八月, 2023


简介: 在docker的使用中随着下载镜像越来越多,构建镜像、运行容器越来越多, 数据目录必然会逐渐增大;当所有docker镜像、容器对磁盘的使用达到上限时,就需要对数据目录进行迁移。

前置工作
在迁移前确认迁移的目标目录空间是否充足
在迁移时需停止docker服务,务必在平台不使用时进行迁移

使用以下命令查询当前docker数据目录安装路径:
docker info | grep "Docker Root Dir"

下文以/mnt/mmcblk1p1/docker 这个TF卡上的路径作为要迁移的新 Docker 安装(存储)目录为例子,对于安装在U盘的,一般是/mnt/sda1/,可以使用 df -h命令自行确定外挂存储路径

迁移方案
方法一:软链接
停掉Docker服务:
systemctl stop docker

根据上面查到的路径,移动整个/var/lib/docker目录到数据盘的目的路径(没有rsync命令时需安装rsync):
sudo apt-get install rsync
rsync -avzP /var/lib/docker /mnt/mmcblk1p1/
参数解释:
-a,归档模式,表示递归传输并保持文件属性。
-v,显示rsync过程中详细信息。可以使用"-vvvv"获取更详细信息。
-P,显示文件传输的进度信息。(实际上"-P"="--partial --progress",其中的"--progress"才是显示进度信息的)。
-z, 传输时进行压缩提高效率。

备份数据目录
mv /var/lib/docker /var/lib/docker.bak

添加软链接
ln -s /mnt/mmcblk1p1/docker /var/lib/

重新启动docker
systemctl start docker

启动 Docker 之后,Docker 写入的路径依然是 /var/lib/docker ,但是因为软链接的设置,实际已经是往新的目录写入了。至此,完成了 Docker 安装(存储)目录的迁移。

通过上述方法完成迁移之后,在确认 Docker 能正常工作之后,删除原目录备份数据:
rm -rf /var/lib/docker.bak

方法二:修改默认存储路径
直接移出数据,并修改docker默认存放路径位置

停掉Docker服务:
systemctl stop docker

根据上面查到的路径,移动整个/var/lib/docker目录到数据盘的目的路径(没有rsync命令时需安装rsync):
sudo apt-get install rsync
rsync -avzP /var/lib/docker /mnt/mmcblk1p1/

修改配置默认路径
在EXECStart后面添加--graph=/mnt/mmcblk1p1/docker/

vim /usr/lib/systemd/system/docker.service
在最后手动加上
ExecStart=/usr/bin/dockerd --graph=/mnt/mmcblk1p1/docker
按Esc后输入:wq退出编辑

重启docker

systemctl daemon-reload  systemctl start docker

查看docker数据存储目录
docker info | grep "Docker Root Dir"
看一看是不是Docker Root Dir: /mnt/mmcblk1p1/docker

确认之前的镜像是否还在
docker images

通过上述方法完成迁移之后,在确认 Docker 能正常工作之后,删除原目录数据:
rm -rf /var/lib/docker

方法三:通过mount挂载的bind命令
备份 fstab文件
cp /etc/fstab /etc/fstab.$(date +%Y-%m-%d)

停掉Docker服务:
systemctl stop docker

根据上面查到的路径,移动整个/var/lib/docker目录到数据盘的目的路径(没有rsync命令时需安装rsync):
sudo apt-get install rsync
rsync -avzP /var/lib/docker /mnt/mmcblk1p1/

将备份保存
mv /var/lib/docker/ /var/lib/docker.bak

通过mount挂载的bind命令将新位置挂载到老位置

创建挂载点

mkdir /var/lib/docker  mount --bind /mnt/mmcblk1p1/docker /var/lib/docker  mount -a

创建开机自动挂载

vim /etc/fstab
最后一行添加
/mnt/mmcblk1p1/docker /var/lib/docker none bind 0 0
按Esc后输入:wq退出编辑

挂载

mount -a

如有必要重启服务器确认是否成功迁移
reboot

通过上述方法完成迁移之后,在确认 Docker 能正常工作之后,删除原目录备份数据:
rm -rf /var/lib/docker.bak

 

纯小白玩海思机顶盒NAS系统:系统刷好第一步要做什么?

13 八月, 2023

作为一个没有正式接触过linux系统的纯小白,当刷完盒子系统后,其实整个人都是懵逼状态,不知道接下来该怎么让盒子按自己的需求来工作。经过不断琢磨和请教,总算有了些许心得。因为都是身为小白的我自己感触最深的问题,此刻总结分享出来,希望能帮到更多刚摸到门槛的弟兄们。

由于本人实在是"太白",所以描述都是很业余的,希望各路大神不吝赐教,帮忙修改完善,谢谢!

下面,我基于自己的需求,把配置的步骤分别列出来,请大家根据自己的实际情况作出适当修改。以下操作均是在盒子系统终端后台中操作

第一步、修改系统管理员密码:

系统默认root账号的密码为1234,ubuntu账号的密码为ubuntu,下面我们输入以下命令进行修改:

passwd root 或 passwd ubuntu

在New password: 和Retype new password: 重复输入相同的自设密码,即可修改对应账户的密码。

系统反馈passwd: password updated successfully 意为修改成功,如修改失败,注意区分英文大小写,且确保两次输入的密码一致。

第二步、支持exFAT分区格式:

如果希望盒子外接exFAT分区格式的U盘或硬盘,需要输入以下命令让系统支持:

sudo apt-get install exfat-fuse exfat-utils

安装完成需重启盒子,才能正确识别exFAT分区内文件,输入以下命令:
reboot

第三步、更改个人网盘h5ai的默认存档位置(或叫修改或添加软链接):

由于盒子emmc的容量始终是有限的,一般都会外挂U盘或硬盘来扩容,这时我们想把个人网盘h5ai的默认存档路径更改到外置盘上,就可以按以下步骤操作(备注:我的外置U盘挂载为/mnt/sda3,下同。大家需要根据自己的情况修改路径):

mkdir -p /mnt/sda3/files #意为在U盘根目录新建files文件夹。

ln -s /mnt/sda3/files /var/www/html/files/files #意为把h5ai网盘里的files文件夹的软链接,连接到U盘的files文件夹,这样就可以在h5ai里直接查看和下载U盘files文件夹里的文件。

chmod -R 777 /mnt/sda3/files #意为给U盘files文件夹赋予完全读写权限。

以上即完成了h5ai下files文件夹对应到u盘下files文件夹的连接。

假如我们想删除该连接,怎么办呢?我们可以使用以下命令行:

rm -rf /var/www/html/files/files #即可删除h5ai网盘的files文件夹。

切记,不能误删除/var/www/html/files文件夹!

第四步、修改h5ai、webdav(两者相同)的默认用户名和密码:

这一步非常重要,本人就因为使用530版固件(网盘没有访问限制)时没注意这点,差点导致自己的隐私信息外泄!还好现在最新的0808版固件已经增加了h5ai网盘访问限制功能,但我们还是要尽快修改默认的用户名和密码。跟我来做:

echo -n 'XXX:' | tee /etc/nginx/passwords.list #意为设置XXX为用户名,根据需要修改XXX为自定用户名。

openssl passwd -apr1 | tee -a /etc/nginx/passwords.list #意为修改密码,输入后会要求输入2次自定密码并自动保存。

nginx -s reload #重启nginx,使设置生效。

以上已完成了盒子nas系统的初步设置,下一篇我将分享samba的安装、添加samba的用户名和修改密码,敬请期待!

文章来源:http://zengjun.zicp.net:620/blog/index.php/archives/4/ 版权所有,欢迎转载 


 

机顶盒刷NAS系列跑芯片型号获得reg名称教程

机顶盒刷家用NAS-跑芯片型号教程

一、工具

机顶盒、螺丝刀、USB转TTL下载线

图片

)

USB转TTL线,淘宝很多,最好是带个排针吧。

二、软件

刷机软件:HiTool 5.3.12

三、过程

a)打开机顶盒

图片

只需要拆这两个螺丝就可以了,剩下就是撬开就可以了。

图片

周围是一个圈塑料卡子,别弄坏了

b)连接好TTL线和机顶盒

图片

只需要 GND、TX、RX就可以了

连接排针和TTL线,然后插入这个孔,最好是焊接,不然不稳定。

注意:不同TTL线的颜色,表示RX、TX含义不同,具体的看买的是啥线,只要别短路烧坏,如果通讯有问题,一般TX、RX换一下就可以了!

c)查看串口号

图片

图片

我的是com4,记住com4!!

一般都是免驱动的,或者无非就是CH340 、PL2303一类的芯片,自己网上下载或者找卖家要都可以!

d)打开HiToll

刚开始不知道芯片型号,芯片随便选!!!

单击:打开终端工具

图片

e)连接终端

图片

图片

选择串口,就是之前设备管理器里面的串口号

图片

f)断电重新上电(不要拔掉TTL线缆)

图片

好了,芯片号hi3798mv100!

PS:其实也可以不用这个工具,随便找一个串口调试工具,只要把波特率设置好,设备重启,自动就可以读出来了。

用这个hiTool主要是后面要刷程序。。

(下面是串口调试软件的,读出来的)

图片


 

rk322x armbian 移植hi3798 mv100

rk322x armbian 移植hi3798 mv100

链接:https://pan.baidu.com/s/1kGh4qKXxyn8IvGccODxLoQ
提取码:slkc
基于RK322X移植的armbian,感谢@肖的内核编译以及docker,zram,chrony等若干修复,修复扩容脚本兼容hi特有的emmc和其他外置存储
rootfs可刷入emmc,外置存储包含了外置启动bootargv分区(感谢@二毛 提供的思路)和完整系统镜像,可自行替换kernel适配,刷入后即可自动扩容即可使用
使用说明:
1.emmc启动:刷入rootfs镜像即可,注意替换rootfs分区
2.外置usb启动:外置存储中共2个文件,bootargvs刷入emmc中的bootargvs分区,用于改外置USB引导,另一个镜像文件为全盘镜像,op armbian等的tf或U盘怎么刷,这个就怎么刷,可使用rufus、Win32DiskImager、balenaEtcher全盘刷写。
3.理论上rootfs是通用的,只要是armhf都可(如mv200 mv300等),自己适配内核,或者用雕大的内核禁用zram、chrony等服务
4.用雕大内核,使用在mv200 mv300需要如下修改
docker 支持:
update-alternatives --config iptables
#选iptables-legacy
关闭chrony 改用ntpdate
关闭zram服务
该镜像可能还存在其他bug,仅用于测试交流,因固件造成的损失概不负责。


 

海纳思Docker安装Home Assistant (Hassio Supervisor)版本

07 八月, 2023

提示:本Home Assistant版本为Supervisor版本,适合HA高级玩家,占用空间和内存较高,由于海思芯片架构为armv7,不在标准支持范围,还会出现报错,但是不影响实际使用。非高级玩家建议安装自带的Home Assistant容器版本。

1. 下载镜像

docker pull ghcr.io/home-assistant/armv7-hassio-supervisor:2023.08.dev0101
docker pull ghcr.io/home-assistant/armv7-homeassistant:2023.8.0b3
docker pull ghcr.io/home-assistant/armv7-hassio-cli:2023.06.0
docker pull ghcr.io/home-assistant/armv7-hassio-dns:2023.06.2
docker pull ghcr.io/home-assistant/armv7-hassio-audio:2023.06.0
docker pull ghcr.io/home-assistant/armv7-hassio-multicast:2023.06.2
docker pull ghcr.io/home-assistant/armv7-hassio-observer:2023.07.dev2501

删掉冒号和后面的去访问就能知道最新版本是多少,上面贴出来的是目前最新的,有更新的可以自己进去查看
原本是不需要手动下载的,启动的时候会自己下载没有的镜像,很可惜HA Supervisor的版本信息里面没有armv7的,所以无法自动下载,所以务必全部下载,否则启动时候会出错

2. 启动

docker run -d --name hassio_supervisor --privileged \
--restart unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/run/dbus:/var/run/dbus \
-v /opt/hassio:/data \
-e SUPERVISOR_SHARE=/opt/hassio \
-e SUPERVISOR_NAME=hassio_supervisor \
-e HOMEASSISTANT_REPOSITORY=homeassistant/armv7-homeassistant \
ghcr.io/home-assistant/armv7-hassio-supervisor:2023.08.dev0101
此处 /opt/hassio 是Home Assistant的所有数据,可以改到你想要的地方,迁移的时候也只需要迁移这个文件夹,并卸载重新安装所有插件(插件即容器,数据不会丢)

然后需要耐心等待,按网速和性能需要蛮长时间的,用这个命令来看安装情况或者直接去portainer看log

docker logs -f hassio_supervisor

3.进入HA
主页那个智能家居是进不去的,http://盒子的ip:8123 手动进去
我们这个容器面板会被识别成不健康的
hassio文件夹下新建jobs.json并在里面写入

{"ignore_conditions": ["healthy"]}
进入后会有一系列报错,因为我们这个硬件不是官方支持列表里面的,忽略就好