[Share Experiences] 把DOCKER装到U盘可以谁身带(类似固件化的Linux+DOCKER) Resolved
Tofloor
poster avatar
酷谷的谷子
deepin
2023-07-12 00:15
Author

建议使用移动硬盘(有条件的使用固态移动硬盘或固态U盘),~~当然你也可以使用光驱插好光盘。~~因为大部分U盘对EXIT的支持不好或者根本就不支持。docker目录须要使用EXIT4文件系统,所以我的U盘跑不了,换成移动硬盘后完美解决问题。

所以光驱 跑 虚拟机系统 DOCKER 各种系统就不是问题了,不需要为装系统而烦恼。

但是这个固件化的系统使用Mint 20.2 制作,启动以后内存消耗差不900M。还是偏大不过还好了,毕竟服务器系统开机也有500M作用。

最低内存需要4G,因为 /home 共享内存的一半,有4G就会占用2G,也就是共享内存空间 不过一帮也就会花掉200M左右。

因为不清楚开机以后磁盘的设备的挂载优先,没办法使用脚本挂载 /home。大概使用服务可以挂载,但是这个超出目前能力。退而求其次就是挂载桌面,而不挂载一整个/home 花点时间尝试一下

我试过使用U盘来装Deepin Mint 乌班图 优麒麟,全部失败 ,可能是我的U盘质量不好,不太支持EXIT分区表

所以就换个思路,使用WinPE来引导一个Linux 镜像(iso)文件,来运行一个或多个docker容器

由于docker 容器目录是外挂在镜像外的,使用u盘的一个分区,这样就解决的存储问题


老规矩:先发在改😂

就是使用 mksquashfs 制作 filesystem.squashfs 把Mint 20.02里面的filesystem.squashfs替换掉制作的filesystem.squashfs

需要准备一个轻量化的Linxu 发行版 我使用的是Mint 20.2版本,不要升级到20.03

这样制作的 filesystem.squashfs 不会大于4G,使用虚拟机 安装 Mint 20.2版本 虚拟机加两块硬盘

A 盘装一个跟分区装系统

b 盘,分两个区

1.一个分区保存虚拟内存文件 可以大一点10G-30G 为什么这么大好理解 说到底是内存系统什么都在内存里

但是主目录使用1.8G且和内存共享,所以桌面不要有大文件复制过去,添加的虚拟内存文件有效,

挂载路径/opt/swapfile_KEY 分区的时候就可以填上这个路径

2.另外一个分区挂载容器的目录,挂载路径 /var/lib/docker 分区的时候就可以填上这个路径


下面讲一下 创建虚拟内存文件与挂载风趣,激活虚拟内存

创建虚拟内存文件的脚本 swapfile 文件的权限600所有者群主都是root

#!/bin/bash
#存放虚拟内存文件的路径分区
dataDIR='/home/i8520/桌面'
#8G  要多的话 8388608 x8 但是不能大于保存内存文件的分区不然装不下
swapfile_KEY='8388608'
sudo dd if=/dev/zero of=${dataDIR}/swapfile bs=1024 count=${swapfile_KEY}
sudo mkswap ${dataDIR}/swapfile

激活虚拟内存文件的命令 sudo swapon -p 1 DIR/swapfile

挂载分区

#!/bin/bash
#挂在docker分区
#/opt/swapfile_KEY我这里是挂载到了这里,这个是保存内存文件的位置
#开机密码
key='1234567'
shijian=`date +%Y年%m月%d日%H:%M:%S`
echo "${key}" | sudo -S $shijian
echo "UUID=d711fb1a-2f0d-4dfa-8735-0b0af2649299 /opt/swapfile_KEY ext4  defaults  0  2" | sudo tee -a /etc/fstab >/dev/null
sudo mount -a

母盘就就可以了 ,进入虚拟机系统以后 安装 DOCKER gparted ,更新内核 5.15.0-76 其他什么都不用装,更新一下系统,

写一个启动器文件丢到 /home/$HOME/.config/autostart 在启动下面的脚本

#!/bin/bash
shijian=`date +%Y年%m月%d日%H:%M:%S`
echo '1234567' | sudo -S $shijian
echo "UUID=d711fb1a-2f0d-4dfa-8735-0b0af2649299 /opt/swapfile_KEY ext4  defaults  0  2" | sudo tee -a /etc/fstab >/dev/null
echo "UUID=44279cd1-9312-45cc-aba8-6e4877e2a13f /var/lib/docker   ext4  defaults  0  2" | sudo tee -a /etc/fstab >/dev/null
sudo mount -a
sleep 2
sudo swapon -p 1 /opt/swapfile_KEY/swapfile
sleep 1
#预留的脚本接口,下面路径是在镜像外的
/opt/swapfile_KEY/RUN
sleep 1
#重启docker因为加载DOCKER分区的原因
sudo systemctl restart docker
exit 0

关闭虚拟机


下面在装一个Linux 系统这个谁便都可以 进入虚拟机以后 安装 gparted 关机

使用这条虚拟机添加上面的虚拟机系统盘后开启该虚拟机

然后使用下面脚本制作 filesystem.squashfs

#!/bin/bash
#上面准备好的虚拟机系统盘
dataDIR='/media/用户名/53ed579d-4634-4ade-9c36-d5365a539f14'
sudo mksquashfs ${dataDIR} filesystem.squashfs

最后把 filesystem.squashfs 移出来,

使用压缩软件 把里面的内核文件拿出来

initrd.img-5.15.0-76-generic 改成 initrd.lz

vmlinuz-5.15.0-76-generic 改成 vmlinuz

使用UltraISO软碟通 来编辑 Mint 20.02镜像 替换到里面原来的 filesystem.squashfs initrd.lz vmlinuz

最后得到一个包含DOCKER服务的镜像ISO文件 通过优盘PE加载 引导 在配合 优盘别的分区 这个需要设计好


注意事项 由于ISO启动下的Mint 自动挂的目录是没有权限访问的 ,且需要卸载以后才能挂载

把这个脚本放到合适的位置 延迟启动,也就是在挂载外部分区的脚本前执行

#!/bin/bash
sleep 5
#开机密码
key='1234567'
shijian=`date +%Y年%m月%d日%H:%M:%S`
echo "${key}" | sudo -S $shijian
#用户名
USRE_NAME='i8520'
sudo chown $USRE_NAME /media/$USRE_NAME
sudo chgrp $USRE_NAME /media/$USRE_NAME
sleep 1
sudo umount /dev/sda5
sudo umount /dev/sda6
sleep 1
echo "/dev/sda5  /opt/swapfile_KEY ext4  defaults  0  2" | sudo tee -a /etc/fstab >/dev/null
echo "/dev/sda6  /var/lib/docker   ext4  defaults  0  2" | sudo tee -a /etc/fstab >/dev/null
sudo mount -a
sudo systemctl restart docker
sleep 1
#因为是NTFS文件系统 所以没有办法设置权限
sudo swapon -p 1 /opt/swapfile_KEY/swapfile
ln -s /opt/swapfile_KEY $HOME/桌面
/opt/swapfile_KEY/RUN
exit 0
Reply Favorite View the author
All Replies
阿尼樱奈奈
Moderator
2023-07-12 00:29
#1

“谁是身带”,好像打错了

Reply View the author
酷谷的谷子
deepin
2023-07-12 00:39
#2
阿尼樱奈奈

“谁是身带”,好像打错了

改了😂

Reply View the author
foxbcd
deepin
2023-07-12 01:04
#3

这多麻烦,直接在 U 盘装个 linux 系统,在里面装个 docker 不就好了

Reply View the author
兆兆嘟嘟嘟
deepin
2023-07-12 01:08
#4

轻量化发行版建议用veket。

Reply View the author
babyfengfjx
Super Moderator
CQA
2023-07-12 18:19
#5

所以这是个很牛皮的经验。

Reply View the author
酷谷的谷子
deepin
2023-07-12 19:05
#6
foxbcd

这多麻烦,直接在 U 盘装个 linux 系统,在里面装个 docker 不就好了

我试过使用U盘来装Deepin Mint 乌班图 优麒麟,全部失败 ,可能是我的U盘质量不好

所以就换个思路,使用WinPE来引导一个Linux 镜像(iso)文件,来运行一个docker容器

由于docker 容器时外挂在镜像外的,使用u盘的一个分区,这样就解决的存储问题

Reply View the author
酷谷的谷子
deepin
2023-07-12 19:06
#7
babyfengfjx

所以这是个很牛皮的经验。

爱折腾的经验😂

Reply View the author