Docker构建后如何让容器持续运行?SSH服务场景技术咨询
让Docker容器持续运行OpenSSH服务器的解决方案
嘿,刚上手Docker遇到这种问题太正常了,我之前帮同事踩过一模一样的坑,咱们一步步来搞定它~
首先得搞清楚你的容器为啥会停止:你当前的Dockerfile只做了创建sshd运行目录和启动命令,但默认的OpenSSH服务器可能有几个配置问题,导致sshd启动后立刻退出,容器也就跟着停了。咱们先完善Dockerfile,再调整启动步骤:
1. 完善你的Dockerfile
默认情况下,很多基础镜像里的OpenSSH会禁止root密码登录,甚至root账户都没设置密码,这会直接导致sshd启动失败。咱们把这些必要配置补上:
# Download base image FROM BaseImage # 给root设置一个强密码(记得替换成你自己的安全密码!) RUN echo 'root:YourSecureRootPass123!' | chpasswd # 修改sshd配置,允许root通过密码登录 RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config RUN sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config # 创建sshd运行必需的PID目录 RUN mkdir /var/run/sshd # 前台启动sshd(-D参数会让sshd一直跑在前台,这是容器保持运行的核心) CMD ["/usr/sbin/sshd", "-D"]
2. 正确构建并启动容器
注意你之前的启动命令有个小误区:docker run后面应该跟镜像名/镜像ID,而不是容器ID(容器ID是已经创建好的实例,要用docker start来重启)。正确步骤如下:
- 构建镜像(假设Dockerfile在当前目录):
docker build -t my-ssh-container . - 启动容器,映射端口并后台运行:
docker run -p 52022:22 -dit my-ssh-container
3. 验证容器状态与登录
- 检查容器是否正常运行:
看STATUS列是不是显示docker psUp X minutes,如果是,说明容器已经稳定运行了。 - 测试SSH登录:
输入你在Dockerfile里设置的密码,应该就能成功登录容器了。ssh root@localhost -p 52022
排查问题的小技巧
如果容器还是停止了,先看日志找具体原因:
docker logs <你的容器ID>
日志里会明确显示sshd启动失败的细节(比如密码未设置、配置语法错误等),根据提示调整就行。
内容的提问来源于stack exchange,提问作者AlexScalar
相关产品推荐
相关产品推荐

