You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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. 验证容器状态与登录

  • 检查容器是否正常运行:
    docker ps
    
    看STATUS列是不是显示Up X minutes,如果是,说明容器已经稳定运行了。
  • 测试SSH登录:
    ssh root@localhost -p 52022
    
    输入你在Dockerfile里设置的密码,应该就能成功登录容器了。

排查问题的小技巧

如果容器还是停止了,先看日志找具体原因:

docker logs <你的容器ID>

日志里会明确显示sshd启动失败的细节(比如密码未设置、配置语法错误等),根据提示调整就行。

内容的提问来源于stack exchange,提问作者AlexScalar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:44:04