【问题标题】:Interactive mode is ignored for containers ran without it对于没有它运行的容器,将忽略交互模式
【发布时间】:2019-11-22 17:37:17
【问题描述】:

我正在尝试了解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

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

【问题讨论】:

  • @LinPy -t 标志对start 命令没有影响。 unknown shorthand flag: 't' in -t See 'docker container start --help'. -i 可以指定。
  • 对不起,我没有注意到那个开始。我认为没有办法阻止它停止
  • @LinPy 但我真正关心的是是否可以将start -i 用于在没有-i 的情况下创建的容器。也许有一些解决方法?
  • 是的,仅当图像具有入口点时,请在此处查看我的答案:stackoverflow.com/questions/58500866/…
  • 执行 docker exec -it 57806f93e42c bash

标签: docker dockerfile docker-container


【解决方案1】:

这是因为您的容器在没有allocating pseudo-TTY 的情况下以分离模式运行,因为 bash 是您容器的主进程,所以它会立即退出。

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

Docker container will automatically stop after "docker run -d"

所有你需要分配的伪终端

docker container run -dit tst

还有下一条命令

docker container start -i 57806f93e42c

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

docker container stop

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

container_start

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    • 2018-11-27
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    • 2016-06-13
    相关资源
    最近更新 更多