这是关于 Docker 官方 Centos6 和 Centos7 镜像
有 3 个独立但相关的问题:
(1)使用“docker RUN centos”启动时,root 密码是什么以及如何找到它?
(2)从派生映像(通过使用 Dockerfile FROM 条目从官方 docker centos 派生的映像)启动时,root 密码是什么以及如何找到它?
(3)在这两种情况下,如果答案是“您需要在 Dockerfile 中设置 root 密码”,那么设置它的最佳推荐方法是什么。(“yum install passwd; passwd;”是一种选择,但这是最佳实践吗?)
非常感谢!
答案1
要在 Docker 容器内设置 root 密码:
- 以 root 身份登录:docker exec -ti -u root容器编号/bin/bash
- 使用passwd命令更改密码。
- 在Docker 中提交更改(即docker commit)。
答案2
(1):我不知道,但那没关系。如果你运行,docker run -it centos
你将启动一个新容器并立即以 root 身份进入其中。然后你可以使用 以交互方式设置新的 root 密码passwd
。但这是一种罕见的用例,主要用于进入容器的第一步。
(2):如果有人从基础映像派生,请尝试获取该映像Dockerfile
。这样您就可以查找他是否设置了密码以及设置了哪个密码。如果Dockerfile
无法获得该密码,我个人会质疑整个映像的质量,因为您永远不知道映像中可能还包含什么。您的情况可能会有所不同。无论如何,您可以依次从该映像派生并设置另一个 root 密码。
(3):您建议的 方式passwd
很合理,但无论如何,在容器中实施固定密码对我来说感觉不对。容器应该执行一项任务,并且实际上永远不需要登录。对于异常的故障排除会话,您始终可以使用“docker attachment”或“docker exec”从 Docker 主机访问容器。如果您确实需要登录容器,请将 ssh 公钥放入 中~/.ssh/authorized_keys
,这样您就可以从外部控制谁可以访问容器(无论谁有权访问相应的秘密 ssh 密钥)。