数码之家

标题: Winnas进阶篇—玩转docker [打印本页]

作者: badcrazy    时间: 2023-8-27 17:57
标题: Winnas进阶篇—玩转docker
本帖最后由 badcrazy 于 2023-8-29 22:27 编辑

大家都知道docker是linux的产物,win想玩转docker目前有三条路,1虚拟机、2wsl、3docker desktop,其中2和3对系统有要求,都是win10某个小版本以上,而且说到底也是基于hyper-v的虚拟机,所以说来说去win下要玩docker就是虚拟机跑linux一条路。

一、虚拟机软件选择
win下三大虚拟机,hyper-v、vmware、vbox。在xp时代就在玩虚拟机的应该知道connectix virtual pc,微软收购了这个软件后来就有了hyper-v,在vpc时代,他的特色就是内存性能一骑绝尘,但是磁盘性能稀烂,现在整合进了windows,各方面的性能都不错,但是不支持usb十分别扭,所以我一直不喜欢用。vmware,老牌虚拟机,目前公认性能最佳。vbox,开源的,但性能三者里最迟啊,一般不推荐。所以hyper-v还是vmware看你喜欢。
首先玩虚拟机建议8g内存,4g能跑,但是内存很捉急,一般不建议。我配置大家知道j1900,最近弄了根白菜8g,系统winserver 2012 r2,虚拟机选了vmware12,最新的版本是17,但是我这个配置老,系统老,追新没意思。

二、虚拟系统的选择
就像linux下虚拟win大家要选精简版一样,我们虚拟linux也要一个精简的系统,特别我们只需要docker功能。所以各种商业版就不用考虑了,那么最近很火的armbian呢?确实可以,但是armbian x86的安装镜像就有700m,参考arm,安装后1.Xg磁盘空间建占用是没跑了,这还是没跑任何服务的状态那么还有更合适的吗?
这里我推荐openwrt,没错,就是软路由刷的系统,简称op,为啥推荐?op是一个高度定制化的精简linux系统,资源占用极低,就给大家看下官方op刷完并汉化后的占用,内存占用170m,磁盘占用19m,是不是很意外?
[attach]1906249[/attach]
装完docker并启用(启用docker,并没跑容器)后的占用内存占用220m,磁盘占用270m
[attach]1906252[/attach]
这么点占用就搞定了docker环境,反正我不知道还有哪个系统可以。
三、搭建教程
简单说下过程,我的选择是官方op,因为只要docker,不需要乱七八糟功能,官方自然最纯净最合适,当你们也可以自己编译或者选别人编译的op,我就拿官方op来说下
1、去清华源下载op,因为op22.03防火墙更换为nftables,而docker目前还没支持,会导致容器映射端口失败,所以选择22.03前一个版本21.02
Index of /openwrt/releases/21.02.7/targets/x86/64/ | 清华大学开源软件镜像站

我选择openwrt-21.02.7-x86-64-generic-ext4-combined-efi.img.gz,解压缩得到img,用StarWind V2V Converter转换为一个120m的vmdk,新建虚拟机,加载这个磁盘镜像,另外新建一个磁盘,作为你将要使用的磁盘,我建了一个16g的,网络选桥接,这样虚拟机可以和所有设备在同一个网段。
2、启动完成后看下路由器有没有新设备,有跳过,没有需要设置下lan口为dhcp。在虚拟机里敲下回车,出现命令行,输入
uci set network.lan.proto=dhcp
uci commit network
这是把lan口设置为dhcp并保存
然后reboot重启,虽然可以重启网络,但是reboot就6个字母,方便。
3、根据路由器上看到ip地址用ssh软件连接,用户名root,默认没有密码
首先输入sed -i 's/downloads.openwrt.org/mirrors.tuna.tsinghua.edu.cn\/lede/g' /etc/opkg/distfeeds.conf把源切换到清华镜像
然后opkg update && opkg list-upgradable | cut -f 1 -d ' ' | xargs opkg upgrade && opkg install luci-i18n-base-zh-cn luci-i18n-opkg-zh-cn luci-compat luci-lib-ipkg 完成升级并安装中文语言包并安装lcui兼容包,这个包是因为很多国内你懂的软件都是老luci,需要兼容
4、输入opkg install fdisk kmod-fs-ext4 block-mount,这是安装分区软件和挂载点
然后fdisk -l看下磁盘,vm下一般显示 /dev/sdb,然后fdisk  /dev/sdb进行分区,先输入m出菜单,然后g建gpt磁盘,n建立分区,
一般输入1分一个就行了,最后按w保存退出,分区后mkfs.ext4 /dev/sdb,完成后reboot重启
5、重启后在挂载点把/dev/sdb挂载为/也就是root
[attach]1906254[/attach]
保存并应用后系统会提示你输入一堆命令,复制下来,记住把里面的sdb1改为实际的分区名,比如这里是sdb,然后在ssh一次性输入一下啊命令

mkdir -p /tmp/introot
mkdir -p /tmp/extroot
mount --bind / /tmp/introot
mount /dev/sdb /tmp/extroot
tar -C /tmp/introot -cvf - . | tar -C /tmp/extroot -xf -
umount /tmp/introot
umount /tmp/extroot
完成后reboot重启
6、重启后看下磁盘空间是不是变成了修改后的15.xg,不再是120m,发现官方源的dockerman有问题,菜单显示不全,建议用我附件里的安装

确认无误后把附件下载后解压缩的luci-app-dockerman_v0.5.26_all.ipk用winscp上传到/tmp,然后ssh上去
cd /tmp
opkg update && opkg install *.ipk
[attach]1906256[/attach]
dockerman整体和portainer比较接近,但是更强大,比如可以手动添加,也可以直接输入命令(就是docker run -d --name=xxx这样的)新建容器,配置项目也更直观丰富,安装过程也全程显示,就像在ssh一样


[attach]1906427[/attach]
有容器更新按钮,可以一键自动更新镜像并重建容器,可以说对小白和专家都十分友好,对比portainer和fast os,个人认为dockerman是最佳docker面板,没有之一,可惜daocker没法通过docker部署,而是一个luci插件,也就是说,op专用
到此docker环境就搭建好了,怎么玩这里就不说了,各种教程自己找

最后发一下物理机的资源占用情况,夸克在同步,nasacb在做人脸识别,vm跑着op也就这样,除了没有下载,这基本上就是我nas的满负荷状态了
[attach]1906262[/attach]
资源占用最大的也是夸克和nascab
[attach]1906263[/attach]
windows没那么可怕,什么没有32个g跑不了虚拟机完全是笑话


dockerman附件

[attach]1906420[/attach]











作者: 落花萧然    时间: 2023-8-27 18:14
docker还是PVE吧
作者: badcrazy    时间: 2023-8-27 18:21
落花萧然 发表于 2023-8-27 18:14
docker还是PVE吧

j1900玩什么pve,至少win让他全速跑吧
作者: fjytsk    时间: 2023-8-27 18:52
谢谢楼主的详细教程,学习了
作者: 大鼠爱小米    时间: 2023-8-27 19:49
记号一下
作者: dsxmg1990    时间: 2023-8-27 20:49
我5g硬盘还不是一样玩docker,直接用archlinux
作者: badcrazy    时间: 2023-8-27 21:20
dsxmg1990 发表于 2023-8-27 20:49
我5g硬盘还不是一样玩docker,直接用archlinux

换op,你的5g硬盘可以当6g
作者: fzg001    时间: 2023-8-27 21:47
可以考虑下win下hyperv dsm 5.2,dsm再启用docker.
nas功能由dsm支持。
作者: badcrazy    时间: 2023-8-27 21:57
fzg001 发表于 2023-8-27 21:47
可以考虑下win下hyperv dsm 5.2,dsm再启用docker.
nas功能由dsm支持。

这种套娃最没意义,白白浪费性能,这样何必用win?直接黑裙就行了
作者: fzg001    时间: 2023-8-27 22:03
badcrazy 发表于 2023-8-27 21:57
这种套娃最没意义,白白浪费性能,这样何必用win?直接黑裙就行了

对大神来说,的确,多重套娃。不过,对本人这样不熟悉linux的小白来说,可以通过nfs将win里的文件挂载到黑裙里,即使黑裙崩了,文件仍可以在win里看到,多一重安心。
作者: badcrazy    时间: 2023-8-27 22:18
fzg001 发表于 2023-8-27 22:03
对大神来说,的确,多重套娃。不过,对本人这样不熟悉linux的小白来说,可以通过nfs将win里的文件挂载到 ...

那又何必用黑群?直接win系统做nas也足够了
作者: fzg001    时间: 2023-8-27 22:20
badcrazy 发表于 2023-8-27 22:18
那又何必用黑群?直接win系统做nas也足够了

从易用性考虑,dsm手机端的app真香。
作者: badcrazy    时间: 2023-8-27 22:30
fzg001 发表于 2023-8-27 22:20
从易用性考虑,dsm手机端的app真香。

反正三年前我感觉是一塌糊涂,dsfile连单边同步都做不到,手机上删除dsm里的也没了,这种备份功能要来何用?
作者: dtzxl    时间: 2023-8-29 19:19
学习了,谢谢楼主
作者: digitking    时间: 2023-9-2 12:03
j1900的话,推荐op直接写硬盘
作者: 我帝波罗    时间: 2023-9-3 06:14
群晖不咋会玩,准备把NAS上WIN10养老了。。。
作者: badcrazy    时间: 2023-9-3 22:32
digitking 发表于 2023-9-2 12:03
j1900的话,推荐op直接写硬盘

这是在说winnas
作者: jtcat    时间: 2023-9-5 08:23
很有启发。顺便问一下,win自身内存开机占用多少?
作者: lishibai    时间: 2023-9-5 09:01
感谢,又学到了
作者: badcrazy    时间: 2023-9-5 16:13
jtcat 发表于 2023-9-5 08:23
很有启发。顺便问一下,win自身内存开机占用多少?

刚装好开机1g都不到,可以看我另一个winserver2008的帖子,2012和2008差距不大
作者: jtcat    时间: 2023-9-5 16:26
badcrazy 发表于 2023-9-5 16:13
刚装好开机1g都不到,可以看我另一个winserver2008的帖子,2012和2008差距不大

你给虚拟机分配多少内存?我是直接装OMV然后上docker的,发现它虽然占用内存小,但不管你有多少内存,它都能把剩下的内存拿去做文件缓存用,比如我复制一个10G的文件到OMV的共享目录里,哪怕保存在USB外接硬盘写入速度只有60~80M(或者USB2.0的40M),它也能以满网速(100MB/s)先跑一段时间,直到把8G内存空闲部分当缓存用完才恢复正常磁盘写入速度
作者: xz26    时间: 2023-9-5 22:56
一直在用win做nas,win上安装可道云外网做网盘,内网直接用win共享,偶尔还能远程上来轻办公一下。
近期装的intel N100,跑两个虚拟机,一个专门跑docker里面装装云笔记之类的服务,一个跑home assistant os。
用的vm,听说效率相当于hyperv会高一些,不过也基本不怎么占用CPU。
[attach]1914564[/attach]
[attach]1914562[/attach]
[attach]1914563[/attach]



作者: badcrazy    时间: 2023-9-6 09:46
jtcat 发表于 2023-9-5 16:26
你给虚拟机分配多少内存?我是直接装OMV然后上docker的,发现它虽然占用内存小,但不管你有多少内存,它 ...

linux特性就是这样,剩余内存做缓存,给多少用多少,win从win7开始也引入这一机制,所以也是内存越大占用越大,但没linux那么夸张。我分了2g,实际就跑hass给1g也够,不过反正vm也是用多少内存占多少,多给不用还是一样的
作者: badcrazy    时间: 2023-9-6 09:47
xz26 发表于 2023-9-5 22:56
一直在用win做nas,win上安装可道云外网做网盘,内网直接用win共享,偶尔还能远程上来轻办公一下。
近期装 ...

这个机箱霸气
作者: badcrazy    时间: 2023-9-8 01:33
xz26 发表于 2023-9-5 22:56
一直在用win做nas,win上安装可道云外网做网盘,内网直接用win共享,偶尔还能远程上来轻办公一下。
近期装 ...

之前手机看不清图,才发现你这个hass电脑信息怎么这么丰富,我用iot link没那么多信息,你用的是什么插件?
作者: xz26    时间: 2023-9-9 17:36
badcrazy 发表于 2023-9-8 01:33
之前手机看不清图,才发现你这个hass电脑信息怎么这么丰富,我用iot link没那么多信息,你用的是什么插件 ...

1、openhardwaremonitor可以直接接入hass,在configuration.yaml里添加即可
  1. sensor:
  2.   - platform: openhardwaremonitor
  3.     host: 192.168.0.2  #服务器IP
  4.     port: 18086       #OpenHardWareMonitor的端口
复制代码

2、hwinfo64共享内存可以推送到MQTT服务器,然后hass用MQTT插件从MQTT服务器获取硬件信息,稍微麻烦点
作者: badcrazy    时间: 2023-9-10 16:23
xz26 发表于 2023-9-9 17:36
1、openhardwaremonitor可以直接接入hass,在configuration.yaml里添加即可

2、hwinfo64共享内存可以推 ...

好的,谢谢
作者: badcrazy    时间: 2023-9-12 09:35
xz26 发表于 2023-9-9 17:36
1、openhardwaremonitor可以直接接入hass,在configuration.yaml里添加即可

2、hwinfo64共享内存可以推 ...

最早用openhardwaremonitor,嫌弃看不到网速就换了iot link,数据比较少,而且经常数据刷新不了显示未知,hwinfo非常好用,可惜免费版每12小时要手动开启一次内存共享,唉,综合下来还是openhardwaremonitor,看不到网速就忍了
作者: xz26    时间: 2023-9-12 23:55
badcrazy 发表于 2023-9-12 09:35
最早用openhardwaremonitor,嫌弃看不到网速就换了iot link,数据比较少,而且经常数据刷新不了显示未知 ...

我有个偏门办法哈哈,设置个定时任务每隔11小时杀掉hwinfo再启动,它就会重新开始计时,用了半个月没啥问题,不过好像每次启动都会唤醒一下硬盘
作者: badcrazy    时间: 2023-9-13 12:07
xz26 发表于 2023-9-12 23:55
我有个偏门办法哈哈,设置个定时任务每隔11小时杀掉hwinfo再启动,它就会重新开始计时,用了半个 ...

我是想过这个办法,但感觉太麻烦了,最近看到netdata有windows板,打算折腾下看看
作者: stfan    时间: 2023-9-13 17:32
学习了,谢谢详细教程。
作者: badcrazy    时间: 2023-9-14 11:00
xz26 发表于 2023-9-12 23:55
我有个偏门办法哈哈,设置个定时任务每隔11小时杀掉hwinfo再启动,它就会重新开始计时,用了半个 ...

昨天去hwinfo论坛晃了晃,发现12小时限制是7.0版本以后才有的,去找了个6.43老版,果然没限制
作者: ccbw    时间: 2023-9-14 20:45
谢谢分享
作者: qyyxyyf    时间: 2023-9-23 12:57
不错 标记了





欢迎光临 数码之家 (https://www.mydigit.cn/) Powered by Discuz! X3.4