Docker容器如何开启特权模式

 更新时间:2024年10月15日 10:38:21   作者:xjfyt  
文章主要解决Docker容器中无法使用systemctl命令的问题,其原因在于大部分的系统镜像移除了init软件包,导致镜像中没有/sbin/init文件,解决方法是通过编写Dockerfile文件修改镜像,构建新的镜像,并运行新构建的镜像,需要注意的是,开启特权模式虽然方便,但可能存在安全风险

一、问题

1、容器系统中无法使用systemctl命令

即使是开了特权模式(--privileged

2、无法通过/sbin/init启动容器

要想在容器中使用systemctl命令,除了要指定--privileged参数外,还需要指定启动参数为/sbin/init,但是大多数系统会有以下问题。

二、原因

目前大部分的系统镜像,移除了init软件包,导致镜像中没有/sbin/init文件,从而导致无法启动。

三、解决方法

1、编写dockerfile

通过Dockerfile文件修改镜像,达到使用systemctl的目的

Dockerfile文件如下:

  • debian系:
FROM ubuntuRUN apt-get update && apt-get install -y init && apt-get clean allENTRYPOINT ["/sbin/init"]
  • redhat系:
FROM openeuler/openeulerRUN yum update -y && yum install systemd -yENTRYPOINT ["/sbin/init"]

两者的区别在于安装的软件包名不同,debian系的软件包名为init,而redhat系则是systemd,实际使用时,将源镜像换成所需镜像即可

2、构建镜像

docker build -t 新镜像名称:tag名称 .

3、运行构建的镜像

docker run -itd --privileged new_ubuntu:latest /sbin/init

4、验证

进入对应的容器中,就可以执行相关命令了,即拥有了特权模式

四、注意

开启特权模式纵然方便,但是可能存在一定的风险,容器获得特权模式时,将能够访问宿主机所有资源,从而导致各种安全问题。

本教程之所以如此,是将docker容器作为虚拟机使用。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 一次centos Docker网桥模式无法访问宿主机Redis服务的故障排除经历

    一次centos Docker网桥模式无法访问宿主机Redis服务的故障排除经历

    这篇文章主要给大家介绍了关于一次centos Docker网桥模式无法访问宿主机Redis服务的故障排除经历,文中通过示例代码介绍的非常详细,对大家学习或者使用Docker具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-10-10
  • Docker部署Mysql,.Net6,Sqlserver等容器

    Docker部署Mysql,.Net6,Sqlserver等容器

    这篇文章介绍了Docker部署Mysql,.Net6,Sqlserver等容器的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-12-12
  • Docker 学习文档(知识结构整理)

    Docker 学习文档(知识结构整理)

    这篇文章主要介绍了Docker 学习文档的相关资料,需要的朋友可以参考下
    2016-11-11
  • CentOS7安装使用Docker的步骤

    CentOS7安装使用Docker的步骤

    本篇文章主要介绍了详解CentOS7安装使用Docker的步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • docker 清理缓存脚本解析

    docker 清理缓存脚本解析

    这篇文章主要介绍了docker 清理缓存脚本解析,文章围绕主题展开详细的内容介绍,具有一定的参考价价值,需要的小伙伴可以参考一下
    2022-07-07
  • 使用Vscode结合docker进行开发的详细过程

    使用Vscode结合docker进行开发的详细过程

    这篇文章主要介绍了如何使用Vscode结合docker进行开发,在本文中,我将提供一个在 Node 环境中运行的 JavaScript 应用程序示例。阅读在容器内开发以获取所有技术堆栈的详细文档,需要的朋友可以参考下
    2021-07-07
  • .Net8项目使用docker、docker-compose部署的图文步骤

    .Net8项目使用docker、docker-compose部署的图文步骤

    本文主要介绍了.Net8项目使用docker、docker-compose部署的图文步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-04-04
  • docker容器日志查看常用命令及线上日志排查

    docker容器日志查看常用命令及线上日志排查

    这篇文章主要给大家介绍了关于docker容器日志查看常用命令及线上日志排查的相关资料, Docker是一种容器化技术,使用它的过程中需要查看Docker的日志输出来调试或解决问题,需要的朋友可以参考下
    2024-01-01
  • Docker搭建PlantUML服务生成UML图的实践分享

    Docker搭建PlantUML服务生成UML图的实践分享

    PlantUML 是一款开源的 UML 图形生成工具,它支持生成类图、时序图、用例图、活动图等多种类型的 UML 图,广泛应用于软件设计、文档编写以及团队沟通中,本文给大家介绍了Docker搭建PlantUML服务生成UML图的最佳实践,需要的朋友可以参考下
    2025-03-03
  • docker部署tig监控服务教程

    docker部署tig监控服务教程

    本文介绍了使用TIG(Telegraf-InfluxDB-Grafana)架构进行服务监控的方法,通过Docker Compose快速搭建该监控体系,包括Telegraf、InfluxDB和Grafana的安装和配置,Telegraf用于数据采集,InfluxDB用于存储数据,Grafana用于数据可视化,通过配置文件和官方文档
    2024-12-12

最新评论