资讯专栏INFORMATION COLUMN

【docker】小技巧:在宿主机器上直接查看docker容器的进程

nanfeiyan / 936人阅读

摘要:最近看了这篇文章,了解到容器内的一个进程对应于宿主机器上的一个进程。在宿主机器上的进程拥有者和在容器内的进程拥有者都是,同理,我们已经验证了第二点。

最近看了这篇文章:Understanding how uid and gid work in Docker containers,了解到:

docker容器内的一个进程对应于宿主机器上的一个进程

容器内的进程,与相对应的宿主进程,由相同的uid、gid拥有。也就是说,如果在容器内主进程属于用户uid=1000,那么这个容器进程在宿主机器上也属于用户uid=1000。容器内的用户uid=1000就是容器外的用户uid=1000,也是其他容器内的用户uid=1000。上面链接的文章介绍了很多这样的例子。

让我们来验证这两点

docker容器内的一个进程对应于宿主机器上的一个进程

在我的Ubuntu上没有安装、更没有运行mysql,但是我通过docker启动了一个mysql容器。此时,我能够通过在宿主机器上的命令行ps aux | grep mysql看到mysql的进程:


我们能在宿主机器上看到mysqld创建的进程,验证了第一点。

容器内的进程,与相对应的宿主进程,由相同的uid、gid拥有

现在我们验证一下【在宿主机器上的进程拥有者uid、gid】是不是等于【在容器内的进程拥有者uid、gid】。

在宿主机器上的进程拥有者uid、gid

在上面的ps aux | grep mysql输出中,显示进程ID是25138,【容器进程拥有者的用户名】是guest-v+,看不到uid。并且,我们无法通过id guest-v+查看用户信息,因为这个用户名是虚拟的。

在搜索一番以后,我发现ps命令非常强大,几乎能给你所有需要的进程信息!设置几个参数就能让它输出我们想要的进程信息:

ps --pid 25138 -O uid,uname,gid,group,ppid

上面的参数表示,我要查看pid为25138的进程,并且除了默认的列以外,多展示几列:uid,uname,gid,group,ppid
输出如下:

终于找到了!【在宿主机器上的进程拥有者uid】是999,groupid也是999。(PPID(parent pid)展示了父进程的pid,有了它,你可以继续查看父进程的信息)

在ps manuals中,能找到这个命令的更多用法、更多可以展示的列:
在容器内的进程拥有者uid、gid

接下来,让我们查看【在容器内的进程拥有者uid】。
通过docker exec -it 容器名称 bash,在容器内运行一个bash。
根据我之前的博客,执行apt-get update && apt-get install procps,在容器内安装ps(大部分容器为了精简,没有预装ps)。
使用ps ax -O uid,uname,gid,group,ppid,查看容器内的所有进程:

可以看到,在容器内,msqld进程的拥有者uid也是999,groupid也是999。

【在宿主机器上的进程拥有者uid】和【在容器内的进程拥有者uid】都是999,gid同理,我们已经验证了第二点。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27330.html

相关文章

  • 【 全干货 】5 分钟带你看懂 Docker

    摘要:本文从定义,作用,技术架构,安装和使用等全方位带你看懂。最后,于开发者而言提供了一种开发环境的管理办法,与测试人员而言保证了环境的同步,于运维人员提供了可移植的标准化部署流程。显示上图内容就表明安装完成。 作者丨唐文广:腾讯工程师,负责无线研发部地图测试。 导语:Docker,近两年才流行起来的超轻量级虚拟机,它可以让你轻松完成持续集成、自动交付、自动部署,并且实现开发环境、测试环...

    lavnFan 评论0 收藏0
  • 【 全干货 】5 分钟带你看懂 Docker

    摘要:本文从定义,作用,技术架构,安装和使用等全方位带你看懂。如图中左边红框中和右边的红框中都唯一表示为同一个镜像。最后,于开发者而言提供了一种开发环境的管理办法,与测试人员而言保证了环境的同步,于运维人员提供了可移植的标准化部署流程。 作者丨唐文广:腾讯工程师,负责无线研发部地图测试。 导语:Docker,近两年才流行起来的超轻量级虚拟机,它可以让你轻松完成持续集成、自动交付、自动部署...

    Edison 评论0 收藏0
  • docker】 bind-mount或者COPY时需要注意 用户、文件权限 问题

    摘要:问题产生原因最近在使用的时候经常遇到权限问题。如果权限不够,就会出现问题。从上图可以看到,主进程的拥有者是,可以读写任何文件,权限肯定没问题。要解决这个问题,其实就是让用户有权读写以及其中的文件。 问题产生原因 最近在使用docker的时候经常遇到权限问题。通过这个stackoverflow回答,我明白了问题出现的主要原因:Docker在进行bind mount的时候,或者在进行COP...

    muddyway 评论0 收藏0
  • 【转】Docker那些事(一)

    摘要:而实际上在宿主机中也会同步启动一个进程,其在宿主机中是。如果其中的某一个容器正在执行密集型的任务,那么它就会影响其他容器的任务执行效率,导致多个容器相互影响并且抢占资源。 作者:荣幸 为什么是容器 如果问你现在最热门的服务器端技术什么?想必很多人会不假思索的说是容器! 容器技术实际上并不是一个新鲜的名词,现在大家一提到容器马上想到的就是Docker,但是容器这个词并不是Docker公司...

    William_Sang 评论0 收藏0
  • Docker Volume 之权限管理(转)

    摘要:发现问题之后,相应的解决方法也很简单把当前目录的拥有者赋值给,再启动容器就一切正常了。这时我们已经可以知道容器的本地数据卷中文件目录的权限是和宿主机上一致的,只是在容器和宿主机中可能映射为不同的用户组名称。 Volume数据卷是Docker的一个重要概念。数据卷是可供一个或多个容器使用的特殊目录,可以为容器应用存储提供有价值的特性: 持久化数据与容器的生命周期解耦:在容器删除之后数据卷...

    sf190404 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<