发布作者: admin
百度收录: 正在检测是否收录...
作品采用: 《 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 》许可协议授权
适用环境:Proxmox VE 8.x + Ubuntu 22.04 LXC 容器 + 1Panel v2 + Docker 29.x
192.168.8.250/24)到 PVE 宿主机的 Shell 操作:
# 编辑 CT 配置文件(假设 CT ID 为 107)
nano /etc/pve/lxc/107.conf完整配置如下(覆盖原有内容):
arch: amd64
cores: 2
features: nesting=1,keyctl=1,fuse=1
hostname: 1panel
memory: 2048
net0: name=eth0,bridge=vmbr0,firewall=1,gw=192.168.8.254,ip=192.168.8.250/24,type=veth
ostype: ubuntu
rootfs: local-lvm:vm-107-disk-0,size=30G
swap: 512
lxc.apparmor.profile: unconfined
lxc.cgroup2.devices.allow: a
lxc.cap.drop:
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file
lxc.mount.entry: /dev/null sys/module/apparmor/parameters/enabled none bind 0 0| 配置项 | 作用 |
|---|---|
features: nesting=1,keyctl=1,fuse=1 | Docker in LXC 的基础条件 |
lxc.apparmor.profile: unconfined | 解除 AppArmor 限制,允许 Docker 加载 profile |
lxc.cgroup2.devices.allow: a | 允许访问所有设备(含 TUN) |
lxc.cap.drop:(留空) | 不丢弃任何 Linux Capability |
lxc.mount.entry: /dev/net/tun ... | 将宿主机 TUN 设备挂载进容器,frp/OpenVPN/WireGuard 必需 |
lxc.mount.entry: /dev/null sys/module/apparmor/... | 欺骗 Docker 以为系统未启用 AppArmor,绕过 containerd 新版本限制 |
pct start 107
pct enter 107# 安装依赖
apt update
apt install -y ca-certificates curl gnupg
# 添加 Docker 官方 GPG 密钥
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
# 添加 Docker 仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装 Docker
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 验证
docker --version
systemctl status docker编辑 /etc/docker/daemon.json:
nano /etc/docker/daemon.json写入:
{
"registry-mirrors": [
"https://docker.1ms.run"
],
"bip": "10.200.0.1/24",
"default-address-pools": [
{
"base": "10.200.0.0/16",
"size": 24
}
]
}
bip:Docker 默认桥docker0的网段default-address-pools:后续新建网络的地址池registry-mirrors:国内镜像加速
重启生效:
systemctl daemon-reload
systemctl restart docker
# 验证
ip addr show docker0 | grep inet
# 期望:inet 10.200.0.1/24bash -c "$(curl -sSL https://resource.fit2cloud.com/1panel/package/v2/quick_start.sh)"交互选项:
| 选项 | 推荐值 |
|---|---|
| 安装目录 | 默认 /opt |
| 面板端口 | 默认 18080 |
| 安全入口 | 随机生成,记下来 |
| 是否安装 Docker | 选 n(已手动安装) |
| 是否配置镜像加速 | 选 y,填 https://docker.1ms.run |
安装完成后访问:http://你的IP:18080/安全入口
新装的 1Panel 会自动创建 1panel-network,但网段默认是 172.18.x.x,需要重建。
到 应用商店 → 已安装,把所有应用全部停止。
# 查看哪些容器在用 1panel-network
docker network inspect 1panel-network --format '{{range .Containers}}{{.Name}} {{end}}'
# 逐个断开(替换为实际容器名)
docker network disconnect 1panel-network 容器名1
docker network disconnect 1panel-network 容器名2
# 删除旧网络
docker network rm 1panel-network
# 用新网段重建
docker network create \
--driver bridge \
--subnet 10.200.1.0/24 \
--gateway 10.200.1.1 \
1panel-networkdocker network inspect 1panel-network --format '{{range .IPAM.Config}}{{.Subnet}}{{end}}'
# 期望:10.200.1.0/24到 应用商店 → 已安装,逐个启动应用。1Panel 会自动将容器连接到新的 1panel-network。
⚠️ 如果某个应用启动报 network not found,在 1Panel 里卸载后重新安装该应用即可。# 1. Docker 基础测试
docker run --rm hello-world
# 期望:Hello from Docker!
# 2. 默认桥网段
ip addr show docker0 | grep inet
# 期望:10.200.0.1/24
# 3. 1Panel 网络网段
docker network inspect 1panel-network --format '{{range .IPAM.Config}}{{.Subnet}}{{end}}'
# 期望:10.200.1.0/24
# 4. TUN 设备(frp/OpenVPN 等需要)
ls -l /dev/net/tun
# 期望:crw-rw-rw- 1 root root 10, 200 ... /dev/net/tun
# 5. 镜像加速
docker info | grep -A 3 "Registry Mirrors"
# 期望:https://docker.1ms.run/全部符合预期,环境搭建完成 ✅
| 网络 | 网段 | 用途 |
|---|---|---|
| docker0 | 10.200.0.0/24 | Docker 默认桥 |
| 1panel-network | 10.200.1.0/24 | 1Panel 应用互联 |
| 后续新建网络 | 10.200.2.0/24 … | Compose / 自定义 |
172.17.0.0/16 和 172.18.0.0/16 不再出现。
Created 状态无法启动原因:containerd 版本过高,与 LXC AppArmor 冲突。
解决:降级 containerd
containerd --version
apt-cache madison containerd.io
apt install -y --allow-downgrades containerd.io=1.7.28-1~ubuntu.22.04~jammy
apt-mark hold containerd.io
systemctl restart dockerno such file or directory (TUN)原因:/dev/net/tun 未挂载进容器。
解决:确认 107.conf 中有 lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file,重启 CT。
Permission denied原因:LXC 容器自身受 AppArmor 限制。
解决:确认 107.conf 中有 lxc.apparmor.profile: unconfined 和 /dev/null 绑定挂载行,重启 CT。
原因:apps-assets.fit2cloud.com 在 IPv6/代理环境下经常超时。
解决:
# 强制 IPv4
1pctl listen-ip ipv4
# 或在 1Panel 面板设置 → DNS 改为 8.8.8.8 / 114.114.114.114frp → 安装 Frpc 客户端docker ps | grep frpc 看到 Up 即成功bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/manager.sh)"⚠️ 雷池需要 80/443 端口,若 1Panel 已安装 OpenResty,需先将 OpenResty 的 HTTP 改为 8080、HTTPS 改为 8443,把 80/443 让给雷池。
安装完成后访问 https://你的IP:9443,初始密码忘了可重置:
docker exec safeline-mgt resetadmin107.conf 模板arch: amd64
cores: 2
features: nesting=1,keyctl=1,fuse=1
hostname: 1panel
memory: 2048
net0: name=eth0,bridge=vmbr0,firewall=1,gw=192.168.8.254,ip=192.168.8.250/24,type=veth
ostype: ubuntu
rootfs: local-lvm:vm-107-disk-0,size=30G
swap: 512
lxc.apparmor.profile: unconfined
lxc.cgroup2.devices.allow: a
lxc.cap.drop:
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file
lxc.mount.entry: /dev/null sys/module/apparmor/parameters/enabled none bind 0 0新建 CT 时直接套用此模板,可一步到位避免所有权限问题。
—— 评论区 ——