首页 > 解决方案 > 没有交互模式运行的容器将被忽略

问题描述

我试图了解工作方式docker container start并使用以下内容Dockerfile

FROM ubuntu:18.04

WORKDIR /root

RUN apt-get update && apt-get install -y \
                      curl \
                      gnupg2 \
                      git

CMD ["/bin/bash"]

现在我将图像构建为

docker image build -t tst .

并按如下方式运行容器:

docker container run -d tst

我在没有交互模式的情况下运行它,所以它在命令执行完成后立即退出。现在我尝试以交互模式启动这个容器:

docker container start -i 57806f93e42c

但它会立即退出,因为它将以非交互方式运行:

STATUS                                                                                                   
Exited (0) 9 seconds ago

有没有办法覆盖已经创建的容器的“交互性”?

标签: dockerdockerfiledocker-container

解决方案


这是因为您的容器在分离模式下运行而没有分配 pseudo-TTY,因为 bash 是容器的主进程,因此它将立即退出。

这意味着,当在后台运行 (-d) 时,shell 会立即退出。

docker run -d 后 Docker 容器会自动停止

分配伪 tty 所需的一切

docker container run -dit tst

和下一个命令

docker container start -i 57806f93e42c

您只是尝试启动停止的容器,但它会立即退出,它不会创建新容器而是尝试启动停止的容器。

docker container stop

启动一个或多个停止的容器

容器启动


推荐阅读