什么是Docker attach?

35

我对Docker非常陌生,但已经理解了4件事:

  • Dockerfile
  • Docker映像
  • Docker容器
  • docker-compose

还有一些基本命令,如docker run、docker log等。

现在,我遇到了这个命令docker attach,并有以下描述:

使用docker attach 使用容器的ID或名称连接到正在运行的容器,可以查看其持续输出或以交互方式控制它。您可以同时多次附加到相同的包含进程,屏幕共享样式,或者快速查看您分离进程的进度。

当他们说我们可以附加来查看容器的正在进行的活动或输出?时,我不知道他们的意思。如果我有一个控制台应用程序的容器,然后我只需在其中运行docker run,那么我就可以在控制台窗口中看到输出。

docker attach有哪些好处呢?

3个回答

33
当使用交互式选项运行容器时,您可以连接到容器并像在终端上一样输入命令:
$ docker run -itd --name busybox busybox
dcaecf3335f9142e8c70a2ae05a386395b49d610be345b3a12d2961fccab1478

$ docker attach busybox
/ # echo hello world
hello world
attach选项还允许多个连接查看相同的容器并查看每个连接正在输入的内容。
最后,当使用tty选项(-t)连接到容器时,您可以键入Control-PControl-Q来从容器中分离出来,并在后台运行。然后,您可以在将来重新连接到该容器。

附加选项还允许多个连接查看同一容器并查看每个人正在输入的内容。请问您需要详细解释一下这是什么意思。 - Underoos
@Underoos 多个命令提示符可以同时附加到同一个容器。 - BMitch
并查看每个人正在输入什么。这是否意味着一旦命令被执行,它会在所有命令提示符的history输出中显示? - Underoos
1
@Underoos,你尝试运行上面的命令了吗?busybox是一个相当小的基础镜像,适合用于测试。 - BMitch

12
什么是Docker attach?
允许一个终端附加到正在运行的容器。它允许您连接到另一个终端中的进程STDIO。
有什么好处? 文档: 这使您可以查看其正在进行的输出或交互式地控制它,就像命令直接在您的终端中运行一样。
以下是attach的演示:

enter image description here


1
在回答中提供一些新信息是很好的,但我认为你的回答并没有提供关于问题所问的有价值的信息。这个问题是关于docker attach的,OP已经知道其他命令了。 - Kartik Chauhan
1
OP 询问了 Docker attach 的好处,我通过解释其优点并添加演示进行了回答 - 在我看来这是有价值的信息。至于其他概念,我误读了开头的句子并已编辑了答案。 - Joel H
在这种情况下,它究竟比日志更好并不是很清楚。 - bravmi

5
Docker attach 命令用于将我们的终端连接到正在运行的容器,以控制输入/输出操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接