docker - 没有交互模式运行的容器将被忽略
问题描述
我试图了解工作方式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
有没有办法覆盖已经创建的容器的“交互性”?
解决方案
这是因为您的容器在分离模式下运行而没有分配 pseudo-TTY,因为 bash 是容器的主进程,因此它将立即退出。
这意味着,当在后台运行 (-d) 时,shell 会立即退出。
docker run -d 后 Docker 容器会自动停止
分配伪 tty 所需的一切
docker container run -dit tst
和下一个命令
docker container start -i 57806f93e42c
您只是尝试启动停止的容器,但它会立即退出,它不会创建新容器而是尝试启动停止的容器。
docker container stop
启动一个或多个停止的容器
推荐阅读
- javascript - 如何从 console.log 获取 Webpush 订阅者 ID 到 php
- ios - 选择时按钮颜色变化
- php - 如何使用 Laravel 合并两个计数
- python - 如何在下拉列表中选择复选框
- c++ - C++ iostream 编码?
- java - 如何在导入 PApplet 时在 Visual Studio 代码上使用 java 处理时使用对象(构造函数)调用 display() 方法
- docusignapi - Docuasign REST API 重新启用电子签名用户帐户
- vba - 使用 VBA 从 MS Access 表单填充 URL 中的字段时出错
- cmake - 使用 -m32(32 位)构建 yaml-cpp 库 - 在 linux /w gcc 或 llvm 上
- flutter - 更新 Flutter / Dart 方法中的对象列表