小编典典

docker attach和docker exec之间的区别

docker

两者都将能够在容器中执行命令。两者都可以分离容器。

那么docker exec和docker attach之间的真正区别是什么?


阅读 826

收藏
2020-06-17

共1个答案

小编典典

有一个提交PR添加到文档中:

注意: 此命令(attach)不适用于在容器中运行新进程。请参阅:docker exec

回答“ Docker。如何在运行的容器(run -d)中获取bash \ ssh
”阐明了区别:

(docker> = 1.3)如果使用docker attach
则只能使用shell的一个实例
因此,如果我们想使用容器外壳的新实例打开新终端,我们只需要运行docker exec

如果docker容器是使用/bin/bash命令启动的,则可以使用attach访问它,如果不是,则需要 执行
命令以在容器内创建bash实例exec

本期所述

  • Attach不是在容器中运行额外的东西,而是用于附加到正在运行的进程。
  • docker exec”专门用于在已启动的容器中运行新事物,无论是外壳还是其他进程。

相同的问题添加:

尽管attach名称不明确,尤其是由于LXC命令lxc-attach(更类似于docker exec <container> /bin/sh,但特定于LXC),但它确实具有将您真正地附加到Docker启动的进程的特定目的。
根据过程的不同行为可能会有所不同 ,例如,附加到/bin/bash会给您一个shell,但是附加到redis-
server就像您直接在没有守护进程的情况下直接启动redis。

2020-06-17