LXC安装docker打造轻量化pt下载机
如何才能快速换一种生活方式?参加#牛年Flag#征稿活动,征集你2021年的购物学习生活计划!>>点击查看活动详情<<本次征稿活动欢迎你的敢出敢买Flag、学习Flag以及各种生活Flag,优秀的投稿文章能获得优厚的大奖,让我们一起努力实现目标吧!
proxmox有个很实用的工具经常被忽略——LXC,使用pve配合LXC可以灵活地扩缩容容器,并且可以通过手机app或者浏览器实时监控系统状态。
Linux Container容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源。
虚拟机和lxc容器的区别
简单地说,lxc与虚拟机最大的不同就是是否使用宿主机内核。lxc在运行的时候相当于在宿主机的内核上运行另一个操作系统,并且将这部分程序隔离。虚拟机在运行的时候会虚拟cpu,并且在这个虚拟的cpu上运行虚拟机的内核,在内核的基础上再运行操作系统。 总之会慢不少。
lxc容器与docker容器的比较
docker也是一种容器技术,与lxc相比,lxc明显有一个弊端,lxc没有很多易用的镜像,浏览proxmox的lxc模板列表,基本都是各种linux发行版和部分比较热门的应用,比如nextcloud镜像。docker与之相比有海量的镜像资源,进入docker hub基本上能想到的软件都有docker镜像。
如果直接在proxmox宿主机上运行docker-engine,会让管理变得复杂,需要同时管理proxmox和docker。开一台虚拟机运行ubuntu并且安装docker解决了管理复杂的问题,又会有不少的资源浪费,在需要扩容的时候操作也比较复杂。因此在LXC中运行docker是一个比较好的解决方案。
在lxc中运行docker,docker里的应用其实还是运行在宿主机的内核上,因此这种套娃的性能损失挺小的,cpu性能的损失可以忽略。
在lxc中安装docker
加载内核模块
docker需要aufs和overlay两个内核模块,因为lxc运行在宿主机内核上,所以宿主机内核加载了这两个模块,lxc容器自然就可以使用他们。先在宿主机加载这两个模块
进入宿主机的命令行输入 modprobe aufs && modprobe overlay 加载模块
这个操作是临时的,为了每次开机自动加载需要修改/etc/modules。在后面添加两行
aufs
overlay
创建容器
点击右上角的创建容器
系统我选择了ubuntu,然后按照指引一步步完成创建容器。
由于lxc的一些设定,直接运行docker会报错权限不足。所以需要修改容器选项。点击容器的选项找到最下面的签名一栏。
勾选前两个按键和嵌套然后点击ok。
这时容器已经创建完毕,可以直接开机安装docker了。
安装docker
进入系统以后先把软件源换成国内的镜像源,我选择使用阿里云镜像源。
配置完镜像源以后apt update一下。接着开始安装docker,如果使用其他系统可以参考官方的安装教程,我这里演示的是ubuntu的安装方法。
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get -y install docker-ce docker-ce-cli containerd.io
照着输命令就完成了docker的安装,最后验证一下是否安装成功。执行docker run hello-world,如果没有报错说明docker装好了。
安装docker-compose
为了更方便地管理docker容器,安装一个docker-compse,这是一个docker的辅助工具。
sudo apt -y install python3-pip
pip3 install docker-compose
先不要急着装软件,做一个模板
辛苦那么久在lxc中安装了docker,可能以后都不想折腾了 ,不妨把现在的系统作为以后的起点
。先把容器关机,点击右上角的更多,点击下拉菜单的转换为模板。几秒钟过后转换就完成了。
这个时候会发现刚才的虚拟机开机键不见了,先不要慌,还是点击右上角的更多,在下拉菜单选择克隆。在窗口中设置好想要的主机名,并且把模式改为链接克隆,这样可以节省很多硬盘空间
点击克隆,一台新的容器出现了。擦电~开机~还是熟悉的味道,docker可以正常运行。
基础环境都搭建完成 开始安装qbittorrent与h5ai
可以参考我的设置无脑装
cd
mkdir downloads && mkdir qbconfig && mkdir h5aiconfig
nano docker-compose.yml
在编辑器中粘贴以下内容
---
version: "2.1"
services:
qbittorrent:
image: ghcr.io/linuxserver/qbittorrent
container_name: qbittorrent
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Shanghai
- WEBUI_PORT=8080
volumes:
- ./qbconfig:/config
- ./downloads:/downloads
network_mode: host
restart: unless-stopped
h5ai:
image: bin20088/h5ai
container_name: h5ai
environment:
- HTPASSWD=true
- HTPASSWD_USER=smzdm_timzhong
- HTPASSWD_PW=pass2word3
volumes:
- ./downloads:/h5ai
- ./h5aiconfig:/config
ports:
- 80:80
restart: unless-stopped
执行:docker-compose up -d 稍等一会大功告成。
可以直接在浏览器访问 http://你的容器ip:8080 进入qbittorrent控制台。默认账户admin,默认密码adminadmin。初次进入是英文界面,在设置里可以更改为中文。
访问 http://你的容器ip 查看所有下载好的文件。
写在最后
还记得前面那个模板吗,用这个模板还能轻松地克隆更多容器,探索更多玩法。欢迎关注,后续还有很多有关proxmox虚拟机和容器的文章。更多教程文章会看情况搬运一部分来张大妈
在升级6.3-3版本后,会出现docker无法启动的问题,需要将lxc降级为上一个版本。 依次输入以下命令 1. apt-get install lxc-pve=4.0.3-1 2. apt-mark hold lxc-pve

官方6.3-4已经解决了这个问题
发邮件私聊zaliaoqun@126.com
已经有6.3-3的解决方案了吗?更新的文章还没出来,谢谢,辛苦了。
看需求,性能要求不高用容器更灵活
docker不要跑数据库
提交了一个这篇文章的追加修改,审核通过以后应该就能看到了
不急,就是瞎折腾,等你研究好了解决方案,再来抄作业,哈哈,关注你了,期待你的更新
看了一下changelog,lxc在最新版本对AppArmor做了修改,如果着急用可以把lxc这个包回滚到旧版本。
说错了,6.3-3
6.2.3-3确实存在问题
@TimZhong 前两天尝试了一下,今天升级了pve3.3-3后 docker无法启动,重做模板也不行。pve2是没有问题的,请问是否pve3不支持lxc套娃了?
大佬,还招运维工程师吗?
开虚拟机吃内存和cpu,开pt下载没有性能需求和迁移需求用lxc还不错,实际生产lxc确实没啥用,我现在用的集群里只有一台lxc用来跑kubectl
感觉没有特别大的意义,不如用虚拟机跑个ubuntu server 或者rancher os 之类的方便。而且只有vm可以在多台proxmox host构成的cluster里做live migration,对于纯docker搞高可用服务还是很方便的。多年proxmox后已经基本彻底抛弃了lxc
然后装几个系统,就可以搞起k8了
之前在这个地方尝试过安装hass.io 但是失败了。后来无奈还是装了个debain来装hass.io
unraid只能安装在优盘上,难搞。。。
proxmox安装在站内已经有很多人写过了,参考一下那些大佬的安装教程吧
unraid好,就是贵
哦,这样。OMV也不错,不过觉得arm跑跑也就够了,x86的性能可以应付群晖。
proxmon
手机管理软件是哪个?
最开始我也用pve,现在转unraid了
小白进来一看蒙圈了。看样子前面的那个基础工具也得翻来看看。
我刚才去看了一篇关于容器性能的论文,在数据库高强度fsync的场景下,由于共用了一个内核,不同容器的数据库之间写入会存在资源的竞争,最差的情况下延迟是vm的接近4倍。但是在低fsync的场景下lxc的io性能要好于vm不少
好管理,proxmox有好用的手机管理软件,还有模板方便折腾
容器里面装容器,博主🐮批
曾经测ceph的时候对比过,容器比虚拟机稍微快一点,原理上都是lvm创建一个logic volume,速度应该没太大区别。虚拟机更快我猜是虚拟机系统用了内存缓存加速?