LXC容器内启动Docker服务报错无法应用RC_ULIMIT设置如何解决
问题定位
该问题同时涉及hypervisor宿主机侧的LXC容器权限配置限制,以及Alpine容器侧的Docker启动脚本默认参数要求:
默认LXC容器未开放修改系统ulimit的权限,而Alpine官方源提供的Docker包使用OpenRC作为服务管理器,启动脚本默认会尝试设置RC_ULIMIT参数,该操作无权限就会抛出对应的报错。
解决方案
第一步:修改hypervisor侧(Debian宿主机)的LXC容器配置
- 先关闭运行中的Alpine容器:
lxc-stop -n <你的Alpine容器名称>
- 编辑对应容器的配置文件,默认路径为
/var/lib/lxc/<你的Alpine容器名称>/config,添加以下配置项:
# 关闭AppArmor限制 lxc.apparmor.profile = unconfined # 允许容器访问所有设备 lxc.cgroup.devices.allow = a # 若你的Debian宿主机使用cgroup2(Debian 11及以上版本默认启用),额外添加下面这行 lxc.cgroup2.devices.allow = a # 保留所有Linux capabilities lxc.cap.drop = # 挂载可读写的proc、sys文件系统 lxc.mount.auto = proc:rw sys:rw
- 保存配置后重新启动容器:
lxc-start -n <你的Alpine容器名称>
第二步:修改Alpine容器侧的Docker启动配置
- 进入Alpine容器后,编辑Docker的OpenRC配置文件
/etc/conf.d/docker,添加以下参数禁用ulimit设置:
RC_ULIMIT=""
- 设置Docker开机自启并启动服务:
sudo rc-update add docker boot sudo service docker start
- 验证服务状态,正常输出Docker信息即为配置成功:
sudo docker info
内容的提问来源于stack exchange,提问作者azmeuk
相关产品推荐
相关产品推荐

