每次运行容器时,有没有办法生成新的SSH服务器密钥?我最初认为我可以将它添加到Dockerfile但我认为这只是指图像构建过程。每次运行容器时我都需要一个新密钥。
这就是我创建图像所做的。
https://docs.docker.com/engine/examples/running_ssh_service/
答案 0 :(得分:2)
这是一个自定义入口点脚本的小示例设置,用于在开始时动态编辑容器。
Dockerfile:
FROM SOMETHING
RUN mkdir /start
ADD entrypoint.sh /start/entrypoint.sh
# set the entry point to custom script
ENTRYPOINT ["/start/entrypoint.sh"]
# define pseudo command, which is recognized by entry point script
CMD ["sshd"]
这会将入口点复制并设置为“entrypoint.sh”,将CMD设置为“sshd”。
这里是entrypoint.sh:
#!/bin/bash
# Fail fast, including pipelines
set -eo pipefail
... do your stuff like SSH key creation
if [ "$1" = 'sshd' ]; then
exec /usr/sbin/sshd -D
fi
# if CMD is not sshd execute the CMD.
# Good for debugging because you can pass /bin/bash for example as CMD
exec "$@"
现在,您可以在入口点脚本的开始时间对您的ssh密钥进行gerate,并在提供正确的CMD时运行您的应用程序。
为了调试容器,您现在可以将“/ bin / bash”作为CMD提供给docker run命令。这将为您提供bash shell而不是启动您的应用程序,但您的自定义仍然完成。
启动SSHD:
docker run myImageName
调试入口点脚本是否正确运行:
docker run -i -t myImageName /bin/bash
答案 1 :(得分:1)
试试这个
CMD /bin/rm -v /etc/ssh/ssh_host_* && dpkg-reconfigure openssh-server && /usr/sbin/sshd -D