docker运行容器后agetty进程cpu占用率100%
1、最近在使用docker容器的时候,发现宿主机的agetty进程cpu占用率达到100%

在Google上搜了下,引起这个问题的原因是在使用"docker run"运行容器时使用了"/sbin/init"和"--privileged"参数。
使用/sbin/init启动容器并加上--privileged参数,相当于docker容器获得了宿主机的全权委托权限。这时docker容器内部的init与宿主机的init产生了混淆。
# 引用google到的一段话:
I've done all my testing on them without using --privileged, especially since that's so dangerous (effectively, you're telling this second init process on your system that it's cool to go ahead and manage your system resources, and then giving it access to them as well). I always think of --privileged as a hammer to be used very sparingly.
出于对安全的考虑,在启动容器时,docker容器里的系统只具有一些普通的linux权限,并不具有真正root用户的所有权限。而--privileged=true参数可以让docker容器具有linux root用户的所有权限。
为了解决这个问题,docker后来的版本中docker run增加了两个选项参数"--cap-add"和"--cap-drop"。
--cap-add : 获取default之外的linux的权限
--cap-drop: 放弃default linux权限
从docker官网的文档中可以查到,docker容器具有的default权限及--cap-add可以获取到的扩展权限如下:
Default 权限:
|
Capability Key |
Capability Description |
|
SETPCAP |
Modify process capabilities. |
|
MKNOD |
Create special files using mknod(2). |
|
AUDIT_WRITE |
Write records to kernel auditing log. |
|
CHOWN |
Make arbitrary changes to file UIDs and GIDs (see chown(2)). |
|
NET_RAW |
Use RAW and PACKET sockets. |
|
DAC_OVERRIDE |
Bypass file read, write, and execute permission checks. |
|
FOWNER |
Bypass permission checks on operations that normally require the file system UID of the process to match the UID of the file. |
|
FSETID |
Don’t clear set-user-ID and set-group-ID permission bits when a file is modified. |
|
KILL |
Bypass permission checks for sending signals. |
|
SETGID |
Make arbitrary manipulations of process GIDs and supplementary GID list. |
|
SETUID |
Make arbitrary manipulations of process UIDs. |
|
NET_BIND_SERVICE |
Bind a socket to internet domain privileged ports (port numbers less than 1024). |
|
SYS_CHROOT |
Use chroot(2), change root directory. |
|
SETFCAP |
Set file capabilities. |
通过--cap-add获取到的权限:
|
Capability Key |
Capability Description |
|
SYS_MODULE |
Load and unload kernel modules. |
|
SYS_RAWIO |
Perform I/O port operations (iopl(2) and ioperm(2)). |
|
SYS_PACCT |
Use acct(2), switch process accounting on or off. |
|
SYS_ADMIN |
Perform a range of system administration operations. |
|
SYS_NICE |
Raise process nice value (nice(2), setpriority(2)) and change the nice value for arbitrary processes. |
|
SYS_RESOURCE |
Override resource Limits. |
|
SYS_TIME |
Set system clock (settimeofday(2), stime(2), adjtimex(2)); set real-time (hardware) clock. |
|
SYS_TTY_CONFIG |
Use vhangup(2); employ various privileged ioctl(2) operations on virtual terminals. |
|
AUDIT_CONTROL |
Enable and disable kernel auditing; change auditing filter rules; retrieve auditing status and filtering rules. |
|
MAC_OVERRIDE |
Allow MAC configuration or state changes. Implemented for the Smack LSM. |
|
MAC_ADMIN |
Override Mandatory Access Control (MAC). Implemented for the Smack Linux Security Module (LSM). |
|
NET_ADMIN |
Perform various network-related operations. |
|
SYSLOG |
Perform privileged syslog(2) operations. |
|
DAC_READ_SEARCH |
Bypass file read permission checks and directory read and execute permission checks. |
|
LINUX_IMMUTABLE |
Set the FS_APPEND_FL and FS_IMMUTABLE_FL i-node flags. |
|
NET_BROADCAST |
Make socket broadcasts, and listen to multicasts. |
|
IPC_LOCK |
Lock memory (mlock(2), mlockall(2), mmap(2), shmctl(2)). |
|
IPC_OWNER |
Bypass permission checks for operations on System V IPC objects. |
|
SYS_PTRACE |
Trace arbitrary processes using ptrace(2). |
|
SYS_BOOT |
Use reboot(2) and kexec_load(2), reboot and load a new kernel for later execution. |
|
LEASE |
Establish leases on arbitrary files (see fcntl(2)). |
|
WAKE_ALARM |
Trigger something that will wake up the system. |
|
BLOCK_SUSPEND |
Employ features that can block system suspend. |
所以,在运行容器时,可以不用--privileged参数的尽量不用,用--cap-add参数替代。如果必须使用--privileged=true参数的,可以通过在宿主机和容器中执行以下命令将agetty关闭。
shell> systemctl stop getty@tty1.service shell> systemctl mask getty@tty1.service
参考资料:
https://github.com/docker/docker/issues/4040
https://docs.docker.com/engine/reference/run/
docker运行容器后agetty进程cpu占用率100%的更多相关文章
- 获取进程CPU占用率
获取进程CPU占用率 // 时间转换 static __int64 file_time_2_utc(const FILETIME* ftime) { LARGE_INTEGER li; li.LowP ...
- Linux下java进程CPU占用率高分析方法
Linux下java进程CPU占用率高分析方法 在工作当中,肯定会遇到由代码所导致的高CPU耗用以及内存溢出的情况.这种情况发生时,我们怎么去找出原因并解决. 一般解决方法是通过top命令找出消耗资源 ...
- Linux下分析某个进程CPU占用率高的原因
Linux下分析某个进程CPU占用率高的原因 通过top命令找出消耗资源高的线程id,利用strace命令查看该线程所有系统调用 1.top 查到占用cpu高的进程pid 2.查看该pid的线程 ...
- (转)Linux下java进程CPU占用率高-分析方法
Linux下java进程CPU占用率高-分析方法 原文:http://itindex.net/detail/47420-linux-java-%E8%BF%9B%E7%A8%8B?utm_source ...
- Linux下java进程CPU占用率高分析方法(一)
Linux下java进程CPU占用率高分析方法 在工作当中,肯定会遇到由代码所导致的高CPU耗用以及内存溢出的情况.这种情况发生时,我们怎么去找出原因并解决. 一般解决方法是通过top命令找出消耗资源 ...
- Linux下java进程CPU占用率高分析方法(二)
1. 通过 top 命令查看当前系统CPU使用情况,定位CPU使用率超过100%的进程ID:2. 通过 ps aux | grep PID 命令进一步确定具体的线程信息:3. 通过 ps -mp pi ...
- Linux下java进程CPU占用率高-分析方法
今天登陆同事的一台gateway 开始以为hive环境登陆不了了,仔细一看看了下是因为机器很卡,我每次等几秒没登陆就ctrl+c了,看了下是有个java进程cpu:340.4% mem:14.6% ...
- cidaemon.exe进程cpu占用率高及关闭cidaemon.exe进程方法
问题描写叙述: 这段时间机器总是出现一个奇怪的问题:cidaemon.exe进程占用CUP率98%以上,大大影响了电脑的正常使用.资源管理器中出现多个cidaemon.exe进程,强制结束占用cp ...
- WMI获取进程CPU占用率
Monitor % Process CPU Usage (specific process) http://www.tek-tips.com/viewthread.cfm?qid=395765 for ...
随机推荐
- 程序中提醒用户进去App Store 评分 跳转 代码
大家都知道,评论和评分是决定app在appstore中排名的重要因素,但是大部分用户下载安装APP后却不会去点评,所以添加提示用户去点评的功能是很必要的,如下是代码: 很多用户用了好软件 ...
- mysqldump导出表结构或者表数据
加-d参数代表只导表结构,不加此参数则代表导出结构以及表数据,> 代表录入某一文件,若为>>则表示将内容追加到某文件末尾. -- 导出数据库为dbname的表结构 mysqldump ...
- KiCad EDA 画圆弧
KiCad EDA 画圆弧 看起来像是成功了. KiCad 画圆弧一直没有完善解决,但是 KiCad 一直有在努力.
- 新xcode的literal syntax是什么
New Objective-C Literal Syntax for NSArray, NSDictionary 是以@字符开始的方式简单地创建数组.字典.NSNumber常量. 代码如下: NSNu ...
- some daily
1. 一般div元素的background-color只覆盖到border,而其margin的颜色由外层元素的背景色决定. 2. 当设置了border-box以后,width=border+paddi ...
- @总结 - 1@ 多项式乘法 —— FFT
目录 @0 - 参考资料@ @1 - 一些概念@ @2 - 傅里叶正变换@ @3 - 傅里叶逆变换@ @4 - 迭代实现 FFT@ @5 - 参考代码实现@ @6 - 快速数论变换 NTT@ @7 - ...
- MapReduce数据流-Mapper
- @codeforces - 1096G@ Lucky Tickets
目录 @description@ @solution@ @accepted code@ @details@ @description@ 已知一个数(允许前导零)有 n 位(n 为偶数),并知道组成这个 ...
- 修改UISearchBar背景
转载:http://blog.csdn.net/favormm/archive/2010/11/30/6045463.aspx UISearchBar是由两个subView组成的,一个是UISearc ...
- hdu 4347 The Closest M Points(KD树)
Problem - 4347 一道KNN的题.直接用kd树加上一个暴力更新就撸过去了.写的时候有一个错误就是搜索一边子树的时候返回有当前层数会被改变了,然后就直接判断搜索另一边子树,搞到wa了半天. ...