例如,当我基于debian构建docker镜像时,我想安装ssh服务,然后在Dockerfile上设置ssh用户和密码。如果我在运行之后不想这样做,尽管它有意义。谢谢你的帮助!
...
RUN \
apt-get update && \
# install ssh service
apt-get install openssh-server -y && \
mkdir -p /var/run/sshd && \
useradd sshuser && \
passwd sshuser && \
CMD ["/usr/sbin/sshd", "-D", "&"]
...
答案 0 :(得分:1)
将您的docker文件更改为此文件,以完全按照您最初尝试执行的操作。
...
RUN \
apt-get update && \
# install ssh service
apt-get install openssh-server -y && \
mkdir -p /var/run/sshd
RUN useradd sshuser -m -p $(openssl passwd $PASS)
CMD ["/usr/sbin/sshd", "-D", "&"]
...
虽然请注意,这意味着您生成的密码将永久编码在docker文件中,并且对于查看它的任何人都可以看到。您可以提供加密的SHA而不是明文密码,但这仍然不是一个好主意。
有关详细信息,请参阅man useradd。
作为建议/旁边,在docker世界中更好的方法是在容器中根本不安装sshd
。而是使用:
$ docker exec -i -t <name of the running container> -- /bin/bash
这假设容器已在运行。 Docker exec不需要任何类型的用户名或密码来访问容器。