我在过去几个月里一直使用nsenter来在容器上运行shell以进行调试。我听说并使用过版本1.3中引入的docker exec。 Docker exec seems to be是为了进行调试而进入容器的新的最佳实践,但是我想知道使用docker exec和nsenter是否有任何缺点。比较两者的信息很少。在使用docker exec
与nsenter时,我应该注意或避免哪些具体问题?
答案 0 :(得分:6)
现在还不完全清楚。但我会支持这样的观点,即docker exec
是正式的方式,顺其自然。使用nsenter
的{{1}} actually recommends的作者。如果您遇到任何弊端,他鼓励您报告。
答案 1 :(得分:4)
docker exec与nsenter
nsenter和docker exec之间存在差异;也就是说,nsenter没有进入cgroups,因此避免了资源限制。这可能是调试和外部审计的好处,但对于远程访问,docker exec是当前推荐的方法。
仅适用于Intel 64位平台。可以说,这是Docker唯一官方支持的平台;所以这不是什么大不了的事。
nsenter仍然需要从主机运行;它不能在容器内运行(尚未)。
参考:https://github.com/jpetazzo/nsenter/blob/master/README.md