我试图了解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
是否有一种方法可以覆盖已创建的容器的“交互性”?
答案 0 :(得分:1)
这是因为您的容器在没有allocating pseudo-TTY的情况下以分离模式运行,因为bash是容器的主要进程,因此它将立即退出。
这意味着,在后台(-d)中运行时,外壳程序会立即退出。
Docker container will automatically stop after "docker run -d"
所有您需要分配伪tty
docker container run -dit tst
和下一个命令
docker container start -i 57806f93e42c
您只是尝试启动已停止的容器,但再次它将立即退出,它不会创建新容器,而是尝试启动已停止的容器。
docker container stop
启动一个或多个停止的容器