如何通过 SSH 连接到 Docker?

新手上路,请多包涵

我想创建以下基础架构流程:

使用 Docker 如何实现这一点?

原文由 Kamil Lelonek 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 493
2 个回答

首先,您需要在要 ssh-into 的映像中安装 SSH 服务器。您可以为安装了 ssh 服务器的所有容器使用基本映像。然后,您只需使用 -p <hostPort>:<containerPort> 运行将 ssh 端口(默认 22)映射到主机端口(映像中的远程服务器)的每个容器。 IE:

 docker run -p 52022:22 container1
docker run -p 53022:22 container2

然后,如果主机的端口 52022 和 53022 可以从外部访问,您可以使用主机(远程服务器)的 ip 直接 ssh 到容器,并在 ssh 中使用 -p <port> 指定端口。 IE:

ssh -p 52022 myuser@RemoteServer –> SSH 到 container1

ssh -p 53022 myuser@RemoteServer –> SSH 到 container2

原文由 Javier Cortejoso 发布,翻译遵循 CC BY-SA 3.0 许可协议

注意:此答案推广了我编写的工具。

此处选择的答案建议在每个映像中安装 SSH 服务器。从概念上讲,这不是正确的方法( https://docs.docker.com/articles/dockerfile_best-practices/ )。

我创建了一个容器化的 SSH 服务器,您可以将它“粘”到任何正在运行的容器上。通过这种方式,您可以使用每个容器创建合成。唯一的要求是容器有 bash。

以下示例将启动在本地计算机的端口 2222 上公开的 SSH 服务器。

 $ docker run -d -p 2222:22 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e CONTAINER=my-container -e AUTH_MECHANISM=noAuth \
  jeroenpeeters/docker-ssh

$ ssh -p 2222 localhost

有关更多指针和文档,请参阅: https ://github.com/jeroenpeeters/docker-ssh

这不仅破坏了每个容器一个进程的想法,而且在使用来自 Docker Hub 的图像时也是一种麻烦的方法,因为它们通常不(也不应该)包含 SSH 服务器。

原文由 Jeroen Peeters 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进