老“机”伏枥——3代i5折腾PVE虚拟机之三——通过LXC部署并使用Docker
“82年”的HP EliteBook 2570p部署了PVE,并且在PVE中尝试安装了Windows系统。
为了进一步地了解PVE系统,能够便捷使用,在网上找到各路大神们自发编写的PVE工具。
PVE毕竟是基于Linux的系统,不运行Dockers有点愧对于这个系统。

PVE和Docker之间爱恨情仇
爬了好些官网的帖子,发现PVE跑Docker有以下三种方式:
在VM中运行Docker
在LXC中运行Docker
PVE直接运行Docker
https://forum.proxmox.com/threads/tutorial-proxmox-with-docker-and-portainer.77275/

不太推荐直接运行Docker,因为PVE的好多优势它享受不到:如快照服务、备份、复制、转移等,另外Docker容易和PVE上运行的其它服务在网络上产生冲突。

以上是某位大神在官方论坛的分析:
https://forum.proxmox.com/threads/proxmox-7-1-and-docker-lxc-vs-vm.105140/

总结起来:LXC中运行Docker操作灵活,资源占用少(有共享);VM中运行Docker的优势在于隔离。

VM容易理解,那LXC是啥呢?
LXC
LXC是Linux环境(容器),是Linux发行版的内核(不同发行版的LXC不一样),小巧但不易用(没有图形化界面)。官方介绍:https://linuxcontainers.org/lxc/introduction/

在LXC中安装Docker
PVE安装到电脑之后首先是换源,之前的文章都有涉及,这里忽略。
在PVE中安装LXC
下载CT模板。

选择自己熟悉的系统。

如果如下图显示的下载无法继续,可能是源有问题。停止之后换源,重新再来。

更换CT模板的源(换清华):
cp /usr/share/perl5/PVE/APLInfo.pm /usr/share/perl5/PVE/APLInfo.pm_back
sed -i 's|http://download.proxmox.com|https://mirrors.tuna.tsinghua.edu.cn/proxmox|g' /usr/share/perl5/PVE/APLInfo.pm
换源之后重启服务:
systemctl restart pvedaemon.service
重新下载,当显示OK时,说明下载完成。

创建CT

ID号码自己取,主机名随便取,密码自主设置,不过这些都不能忘。无特权容器一定不能勾。

模板选择之前下载的系统。

磁盘看需求:部署BT的也许大一点。

CPU核心数量看需求。

内存也是按需,512有点捉襟见肘,如果电脑内存大的话,4096也可以考虑。

网络中IPv4一定使用静态,并输入相应的网关地址。

DNS默认就好,除非有特别的想法。

最后汇总确认。

创建完成。

左侧的PVE下多了一个ID为200、名称为docker的容器。

此时需要打开选项页面:
嵌套:必选。
SMB和NFS:按需。
FUSE:看安装Dockers的需求。

现在需要编辑其配置文件,路径如下(id就是之前安装LXC时自己取的)。
/etc/pve/lxc/[id].conf

在LXC容器配置文件下添加以下内容:
lxc.apparmor.profile: unconfined
lxc.cgroup.devices.allow: a
lxc.cap.drop:
#以上三行是必备的,以下两行是用来开启容器tun转发的,不是必须的:
lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file
如果此LXC可以启动:点击启动,并打开控制台,看到docker login,表示安装成功。

在LXC中安装Docker
登录LXC,用户名:root,密码:之前设置的密码。

用PVE自己的控制台可以登录,但使用第三方的工具(如putty)是无法登录的。

手动编辑下列两个文件:
vim /etc/ssh/sshd_config
vim /etc/ssh/ssh_config
上面的命令是使用另外安装的vim这个编辑软件,也可以使用系统自带的nano命令或者vi命令。分别更改:


然后重启ssh服务。
sudo service ssh restart
现在可以使用第三方工具(如Putty)登录LXC了。

登录后使用命令行安装docker,关于docker的不同版本,以下两个链接叙述地非常清楚:
https://blog.csdn.net/a20251839/article/details/113868452
https://zhuanlan.zhihu.com/p/305572519
因为这个PVE安装的是Ubuntu的LXC,因此可以选择dockers.io:
sudo apt-get update
sudo apt-get install docker.io
查看是否安装成功以及docker版本,键入:
Docker安装Portainer并使用其管理Docker
原生的Docker使用命令行管理,对于小白而言非常不友好。Portainer是一个轻量级的容器管理工具,为Docker提供了直观的图形化用户界面。

Portainer的作者是Portaier.io,6053537这位作者将其汉化了。目前最新版本从Portainer更名为Portainer-ce。
https://hub.docker.com/r/portainer/portainer-ce
https://hub.docker.com/r/6053537/portainer-ce
目前hub.docker.com访问不畅,因此将主页主要内容转述在下面:
一键安装:
docker run -d --restart=always --name="portainer" -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock hub-mirror.c.163.com/6053537/portainer-ce
或者通过163.com安装:
docker run -d --restart=always --name="portainer" -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock hub-mirror.c.163.com/6053537/portainer-ce
如网络不畅,可以先拉取到本地,然后本地安装。
docker pull 6053537/portainer-ce
docker run -d --restart=always --name="portainer" -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data 6053537/portainer-ce
安装完成后就可以通过以下网址访问Portainer:
http://LXC.ip:9000

设置密码,创建admin用户。

首页浮现在眼前:目前Docker有一个镜像,运行一个基于此镜像的容器——Portainer。
LXC安装Samba服务
LXC是位于PVE中的一个子系统,局域网内其它Windows希望通过网络邻居访问,就需要在LXC中安装Samba服务。
sudo apt-get update
sudo apt-get install samba
键入以下命令确定安装成功:
创建一个需要匿名访问的共享文件夹(例如home目录下的share),可以这样操作:
sudo mkdir -p /home/share
sudo chmod 777 /home/share
编辑samba配置文件:
sudo vim /etc/samba/smb.conf
增加以下内容:
[share]
comment = Ubuntu File Server
path = /home/share
browsable = yes
guest ok = yes
read only = no
public = yes
writable = yes
重启Samba服务。
systemctl restart smbd
systemctl restart nmbd
Windows通过网上邻居,通过LXC的ip地址就可以看到刚刚设置的匿名共享文件夹。

如果部署BT的容器,可以将下载文件夹指向这个。
总结
Ubuntu的LXC很小巧:安装Portainer之后占用2.2G。
操作以命令行为主,对于小白而言不友好,胆大心细必不可少!
网上资料不少,不过内容冲突也常见,需要自己实践去芜存菁。
小白编辑config等文件的时候推荐使用WinSCP,首先它使用跟windows类似的树形目录,其次它带有类似于Windows的notepad。
后记:关闭笔记本屏幕
PVE安装到了82年的笔记本,管理通过局域网内其它电脑的浏览器,因此笔记本屏幕常亮。网上找到修改grub关闭屏幕的方法。

编辑 /etc/default/grub 文件
vim /etc/default/grub
更改以下内容为:
GRUB_CMDLINE_LINUX="consoleblank=300"
系统启动后300秒熄屏。保存后更新:
update-grub
重启后,PVE在5分钟后熄屏。按键鼠标可以唤醒!



zstarweb
校验提示文案
天人1
校验提示文案
泉水里的水
校验提示文案
frag0
校验提示文案
Vocalist
校验提示文案
Loyalty_Mu
校验提示文案
泉水里的水
校验提示文案
天人1
校验提示文案
Loyalty_Mu
校验提示文案
zstarweb
校验提示文案
Vocalist
校验提示文案
frag0
校验提示文案