有一个提交PR添加到文档中:
注意: 此命令(
attach)不适用于在容器中运行新进程。请参阅:docker exec。
回答“ Docker。如何在运行的容器(
run -d)中获取bash ssh
? ”阐明了区别:
(docker> = 1.3)如果使用
dockerattach,
则只能使用shell的一个实例 。
因此,如果我们想使用容器外壳的新实例打开新终端,我们只需要运行dockerexec如果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。



