$ docker run --rm -it busybox / # who <empty>
在下一个会话中,我正在尝试附加到此Docker容器,并期望第二个用户出现,但再次没有运气:
$ docker attach `docker container ls | grep busybox | cut -d" " -f1` / # who <empty again>
所以问题是-为什么没有登录发生不是由第一次运行和附加,而不是由后续附加?为什么连一个登录都没有登录到这个容器中?
编辑:读了一些书之后,我觉得亚历山大的回答更切题。我一直在阅读一些有用的链接:
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 有一个关于那个图像是什么以及它的用途的讨论。
who 从中读取用户列表 /var/run/utmp . 在常规Linux系统上, login 程序提示输入用户名和密码,然后启动用户的shell。它也会更新 /var/运行/utmp 新用户。 同样的事情也发生在ssh和telnet服务器上。他们应该更新 /var/运行/utmp .
who
/var/run/utmp
login
/var/运行/utmp
在码头集装箱里, 登录 通常不执行。Docker使用 Linux Namespaces ,它不提供完整的Linux系统。当您输入Docker容器时,给定的入口点或命令用pid 1执行。 后续 docker exec 以类似的方式处理呼叫。Docker进入容器的名称空间并执行给定的命令。
登录
docker exec