docker学习之3个重要权限

概述:通过使用docker pull下来的应用,都会发现系统进去后很多操作都无法实现,其实这个里面是会涉及到3个权限的问题

  • 好处就是安全性
  • 坏处就是操作不便

privileged参数

root权限和普通权限

  • 默认正常不带privileged参数启动容器只有root的普通权限

在这里插入图片描述

--privileged=false         Give extended privileges to this container

启动

docker run -itd --privileged=true centos:7.6.1810

init和Systemd脚本
在这里插入图片描述
服务操作命令:

  • 6的版本:service,对应就是 /usr/sbin/init 1号进程管理
  • 7的版本:systemctl ,对应就是 /usr/lib/systemd/system 1号进程管理

容器里重启服务提示Failed to get D-Bus connection: Operation not permitted
在这里插入图片描述
启动

docker run -itd --privileged=true centos:7.6.1810 /usr/sbin/init

默认centos:7.6.1810后面不加参数就是/bin/bash

注意这里我系统是7的版本但是我使用的6的启动方式,其实系统默认已经做了软链接
在这里插入图片描述

详细关于init和Systemd参考:点击访问

Docker资源管理(cgroup)

  • Cgroups是Linux内核提供的一种可以限制、记录、隔离进程组(processgroups)所使用的物理资源(如:CPU、内存、IO等)的机制
  • 默认没有指定参数,资源无限使用
  • 容器启动后默认会在宿主/sys/fs/cgroup/cpu/docker创建文件来做接口对接
  • 特殊的一些应用服务需要依赖宿主机文件

有时出现自己安装新的服务发现启动的时候会提示失败,systemctl status 服务
New main PID 558 does not belong to service, and PID file is not owned by root. Refusing

启动

挂载宿主机cgroup目录,启动时加上-v /sys/fs/cgroup:/sys/fs/cgroup

docker run -itd --privileged=true -v /sys/fs/cgroup:/sys/fs/cgroup \
 centos:7.6.1810 /usr/sbin/init

详细关于cgroup:点击访问

总结:其实可以利用前2个权限来管理容器的运行级别,防止别人恶意破坏,前提是运行的程序无需后续配置管理

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值