我想创建以下基础架构流程:
使用 Docker 如何实现这一点?
原文由 Kamil Lelonek 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想创建以下基础架构流程:
使用 Docker 如何实现这一点?
原文由 Kamil Lelonek 发布,翻译遵循 CC BY-SA 4.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 许可协议
2 回答812 阅读✓ 已解决
1 回答683 阅读✓ 已解决
1 回答626 阅读
首先,您需要在要 ssh-into 的映像中安装 SSH 服务器。您可以为安装了 ssh 服务器的所有容器使用基本映像。然后,您只需使用
-p <hostPort>:<containerPort>
运行将 ssh 端口(默认 22)映射到主机端口(映像中的远程服务器)的每个容器。 IE:然后,如果主机的端口 52022 和 53022 可以从外部访问,您可以使用主机(远程服务器)的 ip 直接 ssh 到容器,并在 ssh 中使用
-p <port>
指定端口。 IE:ssh -p 52022 myuser@RemoteServer
–> SSH 到 container1ssh -p 53022 myuser@RemoteServer
–> SSH 到 container2