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

Docker创建容器后退出无法重新连接,docker attach使用遇阻求助

解决Docker容器退出后无法重新连接的问题

我来帮你理清这里的问题,以及对应的解决办法:

为什么你现在连不上容器?

首先,你用docker run -ti ubuntu /bin/bash启动容器时,这个容器的主进程就是/bin/bash。当你在容器里执行exit或者按Ctrl+D退出bash时,这个主进程就结束了,Docker容器会随之停止运行。这时候你用docker ps是看不到它的,得用docker ps -a才能找到这个已停止的容器。

另外,默认的Ubuntu Docker镜像里是没有安装SSH服务的,所以你尝试用SSH连接肯定行不通——容器里根本没跑SSH服务进程。


正确的重新连接方式(推荐)

1. 重启已停止的容器并进入

首先找到你停止的容器:

docker ps -a

你会看到之前的0e37da213a37容器状态是Exited。

先启动这个容器:

docker start 0e37da213a37

然后用docker exec命令进入容器(这是Docker官方推荐的方式,因为它会在容器里启动一个新的bash进程,不会影响容器的主进程):

docker exec -ti 0e37da213a37 /bin/bash

这次你再退出bash(exit或Ctrl+D),容器依然会保持运行状态,下次可以直接用同样的docker exec命令进入。

2. 启动容器时让它后台运行,避免退出就停止

如果你希望容器启动后一直运行,不用每次都重启,可以在启动时加上-d参数(后台模式):

docker run -dti ubuntu /bin/bash

这里的-d让容器在后台运行,-t分配伪终端,-i保持标准输入打开。之后你随时可以用docker exec进入容器。


关于docker attach的问题

docker attach是用来连接到容器的主进程的,但有个坑:如果你用Ctrl+D退出attach,主进程会结束,容器就停了。如果想从attach里退出但保持容器运行,应该按Ctrl+P然后Ctrl+Q来 detach。

不过还是更推荐用docker exec,因为它更灵活,不会因为退出操作导致容器停止。


不推荐:用SSH连接容器

虽然可以通过安装SSH服务来实现SSH连接,但这不符合Docker的最佳实践(Docker提倡一个容器只运行一个主进程,SSH会额外增加复杂度)。如果非要试,步骤如下:

  1. 进入容器后安装SSH服务:
    apt update && apt install -y openssh-server
    
  2. 设置root密码:
    passwd root
    
  3. 启动SSH服务:
    service ssh start
    
  4. 退出容器后,重新启动并映射端口(比如把容器的22端口映射到主机的2222端口):
    docker run -d -p 2222:22 0e37da213a37
    
  5. 然后从主机SSH连接:
    ssh root@localhost -p 2222
    

但再次强调,这种方式没必要,用Docker自带的exec或attach足够日常操作容器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:47:47