docker - 交互模式将被忽略,因为没有它的容器将运行

标签 docker dockerfile docker-container

我试图了解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

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

最佳答案

这是因为您的容器在不使用allocating pseudo-TTY的情况下以分离模式运行,因为bash是容器的主要进程,因此它将立即退出。

That means, when run in background (-d), the shell exits immediately.



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

您只需要分配伪tty
docker container run -dit tst

和下一个命令
docker container start -i 57806f93e42c

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

Start one or more stopped containers



container_start

关于docker - 交互模式将被忽略,因为没有它的容器将运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58990196/

相关文章:

docker - 从 docker 容器到 kubernetes pod 的端口发布如何工作?

docker - Docker不在目录中搜索文件

docker - 使用 docker 复制但排除

php - Docker PHP5.6 调用未定义函数bindtextdomain()

docker - 无法从 root 构建 docker

docker - 将 udp 多播从 eth0 转发到 docker0

docker compose 不创建容器,但我没有收到任何错误消息

bash - 无法为 tensorflow 服务创建 docker 容器

docker - 如何为 docker 容器的日志着色

docker - Kubernetes Master无法在OpenStack Heat中启动