回答
有一个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. 执行到码头云?
- 3. TestNG和JUnit执行之间的区别
- 4. 管道码头运行容器ID到码头执行
- 5. '执行'和'以脚本执行'之间的区别
- 6. 检查点和码头导出之间的区别
- 7. 码头集装箱和服务之间的区别
- 8. Logrotate postrotate和码头执行器奇怪的行为
- 9. 在执行Jenkinsfile之前执行代码
- 10. 码头图像和码头搜索命令有什么区别?
- 11. 覆盖RaisePropertyChanged来执行附加代码
- 12. 编译代码和可执行代码有什么区别?
- 13. 编译时间,加载时间和执行时间之间的区别?
- 14. SOAP安全头和SOAP头之间的区别
- 15. 执行码头运行时的权限错误
- 16. 无法执行使用调用命令的码头运行
- 17. Superscalar和OoO执行之间的一般区别是什么?
- 18. Storm UI:执行和进程延迟之间的区别
- 19. 执行分支合并和Stream_to_stream合并之间的区别
- 20. 密码的执行时间
- 21. 这两个命令行执行.jar之间的区别?
- 22. 如何防止mvn码头:从执行测试阶段运行?
- 23. 码头运行图像差异不能正确执行
- 24. 有Maven在Linux码头80码头运行码头
- 25. “关键部分”,“关键区域”和“约束执行区域”之间的区别
- 26. 附加js文件里面的js代码动态和执行
- 27. HTTP“不要执行!”头
- 28. Kibana码头运行
- 29. Selenium WebDriver手动测试运行和脚本执行之间的区别
- 30. Vertx 3.4:立即运行代码和context.runOnContext之间的区别