前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >怎么以特权模式运行容器

怎么以特权模式运行容器

原创
作者头像
keepyan
修改2021-07-16 17:40:29
13.4K0
修改2021-07-16 17:40:29
举报
文章被收录于专栏:TKE操作指北TKE操作指北

背景:在容器中执行 systemctl start 命令启动服务时报错:

[root@1ac7516661e1 /]# systemctl start nginx
Failed to get D-Bus connection: Operation not permitted

小编这里是使用docker run 启动的容器,相信很多小伙伴刚接触容器的时候应该都遇到过这个问题。

这里针对这个问题,小编分别从docker 和 kubernetes 两个维度来分析怎么解决这个问题。

先查看报错原因:

https://forum.huawei.com/enterprise/zh/thread-427747-1-1.html

可以参考这里面的方法,问题原因这里 说的还是比较详细的

文档中也有针对docker 环境解决方案做说明:

话不多说,这里直接输出问题解决方案:

Docker环境:

容器时添加 --privileged=true 参数 并使用 /usr/sbin/init 的运行环境

创建容器:

# docker run -d --name centos7 --privileged=true centos:7 /usr/sbin/init

进入容器:

# docker exec -it centos7 /bin/bash

这样可以使用systemctl启动服务了。

ps:这里不建议直接使用特权模式以 docker run -it 这种模式进入容器,如果以特权模式创建容器,

会检查很多启动项,最终也会处于卡死的情况,类似下面这样:

以特权模式运行容器的效果

k8s集群环境

针对k8s 集群环境怎么创建特权级容器,网上并未找到特别详细的说明文档,这里也是参考docker 环境中的操作,加上自己的不断试验,整理操作方式给到大家。

通过上面docker 环境 可以看出,是需要添加 --privileged=true 和 /usr/sbin/init 运行环境。

k8s 创建容器资源的时候同样是需要在yaml 文件中指定这两个参数:

进入k8s 创建的pod 测试效果:

TKE 集群环境:

如果使用腾讯云TKE 集群环境,可以在控制台图形化界面创建容器,相关配置:

集群——工作负载——deployment(为例)—— 容器——显示高级设置

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景:在容器中执行 systemctl start 命令启动服务时报错:
  • Docker环境:
  • k8s集群环境
  • TKE 集群环境:
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档