如何实现docker容器内外的交互

时间:2016-10-07 14:14:40

标签: docker ssh

例如,当我基于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", "&"]

...

1 个答案:

答案 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不需要任何类型的用户名或密码来访问容器。