Py学习  »  docker

为什么在附加到Docker时没有登录?

egor7 • 4 年前 • 355 次点击  
$ docker run --rm -it busybox
/ # who
<empty>

在下一个会话中,我正在尝试附加到此Docker容器,并期望第二个用户出现,但再次没有运气:

$ docker attach `docker container ls | grep busybox | cut -d" " -f1`
/ # who
<empty again>

所以问题是-为什么没有登录发生不是由第一次运行和附加,而不是由后续附加?为什么连一个登录都没有登录到这个容器中?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38370
 
355 次点击  
文章 [ 2 ]  |  最新文章 4 年前
Alexei Martianov
Reply   •   1 楼
Alexei Martianov    4 年前

编辑:读了一些书之后,我觉得亚历山大的回答更切题。我一直在阅读一些有用的链接:

https://docs.docker.com/engine/security/security/

https://lwn.net/Articles/531114


据我所知,BusyBox Docker容器非常基础,不支持成熟Linux的所有功能。

在这里 I thought I understood Docker until I saw the BusyBox docker image 有一个关于那个图像是什么以及它的用途的讨论。

Alexander Fasching
Reply   •   2 楼
Alexander Fasching    4 年前

who 从中读取用户列表 /var/run/utmp . 在常规Linux系统上, login 程序提示输入用户名和密码,然后启动用户的shell。它也会更新 /var/运行/utmp 新用户。 同样的事情也发生在ssh和telnet服务器上。他们应该更新 /var/运行/utmp .

在码头集装箱里, 登录 通常不执行。Docker使用 Linux Namespaces ,它不提供完整的Linux系统。当您输入Docker容器时,给定的入口点或命令用pid 1执行。 后续 docker exec 以类似的方式处理呼叫。Docker进入容器的名称空间并执行给定的命令。