请指点一下,安装openssh-server和使用给定的docker容器启动ssh会话并运行docker run -t -i ubuntu /bin/bash
然后执行某些操作之间有什么区别。 docker attach
如何与这两种方法进行比较?
答案 0 :(得分:2)
区别1.如果要使用ssh,则需要在Docker镜像上安装ssh并在容器上运行。您可能不希望因为额外负载或从安全角度来看。一种方法是保持图像尽可能小 - 避免像心脏一样的错误;)。你是否想要ssh是一个讨论点,但主要是个人品味。我会说只用它来调试,而不是实际改变你的图像。如果你需要后者,你最好制作一个新的更好的形象。就个人而言,我还没有在Docker镜像上安装我的第一个ssh服务器。
差异2.使用ssh,您可以按照CMD的指定启动容器,也可以在Dockerfile中启动ENTRYPOINT。然后,Ssh允许您检查该容器并针对您可能需要的任何用例运行命令。另一方面,如果使用bash命令启动容器,则会有效地覆盖Dockerfile CMD。如果您想测试该CMD,您仍然可以手动运行它(可能作为后台进程)。在调试我的图像时,我会一直这样做。这是从发展的角度来看的。
差异3.第二个的扩展,但从不同的角度来看。在生产中,ssh总是允许你检查你正在运行的容器。 Docker在这方面还有其他选项,例如docker cp
,docker logs
和docker attach
。
根据文档“attach命令将允许您查看任何正在运行的容器或与之交互(-d)或交互式(-i)。您可以同时附加到同一容器 - 屏幕共享样式,或快速查看守护进程的进度。“但是,我在以有用的方式实际使用它时遇到了麻烦。也许使用它的人可以详细说明吗?
这是唯一的本质区别。图像层,提交或类似的东西没有区别。