回答
有一个commit PR其加入到该文档:
注:此命令(
attach
)是不适合的容器中运行的一个新进程。 参见:docker exec
。
答案为 “Docker. How to get bash\ssh inside runned container (run -d
)?” 示出的区别:
(搬运工> = 1.3)如果我们使用
docker attach
,我们可以仅使用一个壳的实例。
因此,如果我们想打开集装箱的外壳的新实例新的终端,我们只需要运行docker exec
如果泊坞窗容器使用
/bin/bash
命令启动,您可以访问它使用连接,如果没有,那么你需要执行使用exec
在容器内部创建bash实例的命令。
正如this issue提到:
- 附上不是在一个容器中运行一个额外的东西,它是连接到正在运行的进程。
- “
docker exec
”专门用于在已启动的容器中运行新事物,无论是壳还是其他过程。
同样的问题补充:
虽然
attach
没有得到很好的命名特别是因为LXC命令lxc-attach
的,(这是更接近docker exec <container> /bin/sh
,但LXC具体的),它有一个特定的从字面上将您附加到Docker启动的过程。
根据过程的不同,行为可能会有所不同,例如附加到/bin/bash
会给你一个shell,但是附加到redis-server会像你刚刚直接启动redis而没有守护进程一样。
当容器使用/斌/庆典开始那么变得容器PID 1和搬运工ATTACH用于获取内部容器的PID 1。所以码头附加<容器ID>将带你进入bash终端,因为它是PID 1,正如我们在启动容器时提到的那样。从容器中退出将停止容器。
而在docker exec命令中,您可以指定要输入的shell。它不会把你带到容器的PID 1。它将为bash创建一个新的进程。 docker exec -it < container-id> bash。 从容器中退出不会阻止容器。
您还可以使用nsenter进入容器内部。 nsenter -m -u -n -p -i -t <容器的PID> 您可以使用以下方法找到容器的PID:docker inspect < container-id> | grep的PID
注:如果你有那么-d标志退出了容器不会停止的容器,无论您使用附加或EXEC进去开始你的容器。
- 1. “码头日志”和“码头附加”有什么区别?
- 2. 执行mysql脚本码头
- 3. 执行到码头云?
- 4. TestNG和JUnit执行之间的区别
- 5. 管道码头运行容器ID到码头执行
- 6. '执行'和'以脚本执行'之间的区别
- 7. powershell - 本地执行和远程执行之间的区别
- 8. 码头根crontab作业未执行
- 9. boot2docker相当于码头执行
- 10. 如何停止执行码头亚军
- 11. cURL头之间的区别
- 12. 执行两个命令与码头执行
- 13. 检查点和码头导出之间的区别
- 14. 码头集装箱和服务之间的区别
- 15. Logrotate postrotate和码头执行器奇怪的行为
- 16. jquery ajax头和beforesend之间的区别
- 17. 码头图像和码头搜索命令有什么区别?
- 18. 在执行Jenkinsfile之前执行代码
- 19. 编译代码和可执行代码有什么区别?
- 20. 覆盖RaisePropertyChanged来执行附加代码
- 21. 编译时间,加载时间和执行时间之间的区别?
- 22. 之间的代码行之间的数据没有执行
- 23. SOAP安全头和SOAP头之间的区别
- 24. 请求头缓存策略和响应头之间的区别
- 25. 无法执行使用调用命令的码头运行
- 26. 执行码头运行时的权限错误
- 27. oAuth从头或之后执行
- 28. 执行分支合并和Stream_to_stream合并之间的区别
- 29. Storm UI:执行和进程延迟之间的区别
- 30. 解释计划和执行计划之间的区别