【发布时间】:2022-01-10 09:22:35
【问题描述】:
我正在使用docker run --name cont -dt img 运行一个容器。据我了解,这为容器提供了一个 tty,但不会将我的主机终端的 stdout、stderr 和 stdin 附加到也在后台运行的容器。
现在我想如果我这样做了docker attach cont(docker 文档说它将 stdio 附加到正在运行的容器,attach)我会获得相同的效果(通过首先运行 docker logs cont 在提示之前查看 stdout)运行docker run --name cont -it img(显示stdout/sterr 分配一个tty 并将stdin 连接到容器)。但是我的主机终端附加但只是挂起,必须使用ctrl+c 分离(ctrl+p+q 不起作用)。
我想了解为什么attach 不能按我的预期工作?我的意思是它背后的真正逻辑以及如果可能的话你是如何理解这一点的,我知道运行 cont 和选项 -dit 并重新附加是可行的。如果有人有提示或可以指出一些阅读资源来理解这一点,那将有很大帮助。谢谢!
Dockerfile
FROM ubuntu:latest
RUN apt update -y
COPY . /tmp
WORKDIR /tmp
CMD ["/tmp/app.sh"]
app.sh
#!/bin/sh
echo "Enter your name: "
read name
echo "Hello ${name}!"
【问题讨论】:
标签: docker io containers