Proxmox VE 8 入门上手系列(三) 创建第一个LXC容器-比虚拟机更轻量

张开发
2026/4/21 2:10:32 15 分钟阅读

分享文章

Proxmox VE 8 入门上手系列(三) 创建第一个LXC容器-比虚拟机更轻量
Proxmox VE 8 入门上手系列三创建第一个 LXC 容器——比虚拟机更轻量本章目标在 Proxmox 上成功创建并运行一个 LXC 容器安装 Nginx并能从浏览器访问。一、LXC 是什么和虚拟机有什么区别1.1 简单类比想象你要开几家餐厅虚拟机KVM每开一家店都要重新盖一栋楼完整的操作系统有独立的水电、厨房、卫生间。资源占用大但完全隔离。LXC 容器在一个大楼里隔出不同的房间共享同一个 Linux 内核每个房间有自己的装修和厨师但水电系统共用。启动快、资源占用少。1.2 技术对比特性KVM 虚拟机LXC 容器启动速度几十秒到几分钟1-3 秒内存占用几百 MB 起步几十 MB 起步磁盘占用几 GB 起步几十 MB 起步性能接近物理机95%接近原生99%隔离性强独立内核较弱共享内核运行系统任何操作系统只能是 Linux适用场景多系统、强隔离需求微服务、轻量应用、开发测试1.3 什么时候用 LXC运行 Web 服务Nginx、Apache运行数据库MySQL、PostgreSQL、Redis运行开发测试环境运行轻量级应用服务不适合运行 Windows、需要自定义内核模块的场景二、下载容器模板2.1 什么是容器模板容器模板是一个预配置好的最小化 Linux 系统镜像类似 Docker 镜像。Proxmox 提供了各种发行版的官方模板。2.2 通过 Web 界面下载模板登录 Proxmox Web 管理界面在左侧资源树中展开节点点击local (pve)上方切换到CT Templates标签页点击Templates按钮弹出模板列表窗口2.3 选择并下载模板在模板列表中推荐选择模板说明适用场景ubuntu-22.04-standardUbuntu 22.04 LTS通用文档丰富推荐新手debian-12-standardDebian 12稳定资源占用更少alpine-3.18Alpine Linux极简仅几十 MBcentos-9-streamCentOS 9 Stream企业环境兼容操作步骤找到ubuntu-22.04-standard_22.04-1_amd64.tar.zst选中它点击Download等待下载完成约 100-200MB1-5 分钟如果下载很慢或失败可以更换软件源见第一章的换源步骤。2.4 验证模板下载完成后在 CT Templates 页面应该能看到utuntu-22.04-standard_22.04-1_amd64.tar.zst三、创建 LXC 容器3.1 开始创建点击右上角的Create CT按钮蓝色弹出创建容器向导3.2 第一步General常规设置参数说明建议填写Node节点默认如 pveCT ID容器编号200与虚拟机区分容器建议从 200 开始Hostname容器主机名nginx-containerPasswordroot 密码设置一个强密码Confirm Password确认密码再次输入SSH Public KeySSH 公钥可选后面再配CT ID 建议100-199留给虚拟机200-299留给容器这样容易区分管理更清晰点击Next。3.3 第二步Template模板选择参数说明选择Storage存储位置localTemplate选择模板选择刚才下载的 ubuntu-22.04-standard点击Next。3.4 第三步Disks磁盘设置参数说明建议Storage存储位置local-lvm 或 localDisk size (GiB)磁盘大小8容器很省空间8GB 对于运行 Nginx 足够了如果还要装数据库可以给 16GB。点击Next。3.5 第四步CPU处理器设置参数说明建议CoresCPU 核心数1容器共享内核1 核够用点击Next。3.6 第五步Memory内存设置参数说明建议Memory (MiB)内存大小512512MB 足够跑 NginxSwap (MiB)交换分区512容器内存占用很少512MB 跑 Nginx 简单网站绰绰有余。点击Next。3.7 第六步Network网络设置参数说明建议Bridge网桥vmbr0IPv4IP 地址DHCP自动获取IPv6IPv6 地址SLAAC默认和虚拟机一样先用 DHCP 自动获取 IP后面可以改静态 IP。点击Next。3.8 第七步DNSDNS 设置使用主机设置即可点击Next。3.9 第八步Confirm确认检查所有配置确认无误后点击Finish。注意不要勾选“Start after created”我们先确认配置再手动启动。四、启动并配置容器4.1 启动容器在左侧资源树中找到刚创建的容器200 (nginx-container)点击选中它点击右上角的Start按钮容器启动只需要1-2 秒比虚拟机快多了。4.2 查看容器 IP点击容器的Summary标签页在IP Address区域应该能看到容器的 IP如192.168.1.102如果没有显示 IP稍等几秒刷新页面。4.3 进入容器控制台点击右上角的Console按钮选择“noVNC”会打开网页版终端自动以 root 登录容器的控制台不需要输入密码直接就是 root 权限。五、在容器中安装 Nginx5.1 更新软件源# 更新软件包列表aptupdate# 升级已安装的包可选aptupgrade-y5.2 安装 Nginx# 安装 Nginxaptinstall-ynginx# 启动 Nginxsystemctl start nginx# 设置开机自启systemctlenablenginx# 查看状态systemctl status nginx看到active (running)说明 Nginx 运行成功5.3 测试访问在另一台电脑的浏览器中输入容器的 IP 地址http://192.168.1.102你应该能看到 Nginx 的默认欢迎页面Welcome to nginx! If you see this page, the nginx web server is successfully installed... 恭喜你你的第一个 LXC 容器已经跑起来了六、容器与宿主机的文件共享有时候你需要在宿主机和容器之间共享文件比如上传网站代码。6.1 挂载宿主机目录到容器步骤 1停止容器在 Web 界面中点击Stop停止容器。步骤 2添加挂载点选中容器点击Resources标签页点击Add→Mount Point填写参数参数说明示例Mount Point ID挂载点编号mp0自动Storage存储选择 local 或目录Path宿主机路径/var/www/sharedMount Point容器内挂载路径/var/www/htmlACLs访问控制列表勾选Backup包含在备份中勾选注意宿主机路径/var/www/shared必须存在先创建mkdir-p/var/www/shared容器内路径/var/www/html是 Nginx 的默认网站目录步骤 3启动容器启动后宿主机/var/www/shared目录的内容会出现在容器的/var/www/html中。6.2 测试文件共享在宿主机上# 创建测试文件echoh1Hello from Proxmox LXC!/h1/var/www/shared/index.html然后在浏览器刷新http://192.168.1.102应该能看到Hello from Proxmox LXC!七、容器的特权模式与非特权模式7.1 什么是特权模式创建容器时在Options标签页有一个“Unprivileged container”选项非特权模式Unprivileged推荐容器内的 root 用户映射为宿主机上的普通用户安全性高但某些操作受限。特权模式Privileged容器内的 root 就是真正的 root可以做任何事但安全性低。7.2 什么时候需要特权模式一般情况下保持非特权模式即可。只有以下情况需要特权需要挂载 NFS/SMB 网络存储需要运行 Docker inside LXC需要修改内核参数需要加载内核模块7.3 修改特权模式停止容器点击Options标签页双击“Features”勾选需要的功能如 nesting、nfs或者双击“Unprivileged container”取消勾选变成特权模式八、容器的日常操作8.1 Web 界面操作和虚拟机类似选中容器后按钮功能Start启动容器Stop停止容器发送 SIGTERMShutdown关闭容器同 StopConsole打开控制台8.2 命令行操作# 查看容器列表pct list# 启动容器ID 200pct start200# 停止容器pct stop200# 进入容器在宿主机上直接执行命令pctexec200--bash# 在容器外执行容器内的命令pctexec200--aptupdate# 查看容器配置pct config200# 查看容器状态pct status200# 克隆容器pct clone200201--hostnamenginx-clone# 删除容器pct destroy2008.3 从宿主机复制文件到容器# 复制文件pct push200/宿主机/文件路径 /容器/目标路径# 示例复制 index.html 到容器pct push200/var/www/shared/index.html /var/www/html/index.html九、常见问题排查Q1容器启动失败提示 “unable to open file”可能是模板损坏重新下载模板删除损坏的模板CT Templates 页面重新下载Q2容器内无法访问外网确认宿主机能上网检查网桥vmbr0配置在容器内检查 DNScat /etc/resolv.conf尝试 ping 网关ping 192.168.1.1Q3Nginx 安装后无法访问检查清单Nginx 是否运行systemctl status nginx防火墙是否放行 80 端口ufw status容器 IP 是否正确ip addr从宿主机能否访问curl http://192.168.1.102Q4挂载点不生效确认容器已停止后再添加挂载点确认宿主机路径存在且容器有权限访问非特权容器可能需要调整 UID/GID 映射Q5容器内安装软件很慢更换国内软件源# Ubuntu 换阿里云源sed-is/archive.ubuntu.com/mirrors.aliyun.com/g/etc/apt/sources.listsed-is/security.ubuntu.com/mirrors.aliyun.com/g/etc/apt/sources.listaptupdate十、本章小结恭喜你到这里你已经完成了✅ 下载了 LXC 容器模板✅ 创建并配置了一个 LXC 容器✅ 在容器中安装并运行了 Nginx✅ 从浏览器成功访问了容器中的网站✅ 学会了容器与宿主机的文件共享✅ 了解了特权模式与非特权模式的区别下一章预告我们将学习 Proxmox 的存储管理包括快照、备份和恢复保护你的数据安全。附录pct 命令速查# 创建容器命令行方式pct create200local:vztmpl/ubuntu-22.04-standard_22.04-1_amd64.tar.zst\--hostnamenginx-container\--memory512\--cores1\--rootfslocal-lvm:8\--net0nameeth0,bridgevmbr0,ipdhcp# 设置容器密码pctpasswd200# 进入容器交互式 shellpct enter200# 容器快照pct snapshot200snap1# 恢复快照pct rollback200snap1# 查看容器日志pct console200

更多文章