Jea*_*eri 5 mongodb ssh-tunnel docker docker-image
我有这个(自定义)容器,它运行一个本地需要 mongo 的 java 程序。现在,通过 docker,我想在它自己的容器中设置 mongo。所以我想,为了在这个 java 容器中本地公开这个 27017 端口,我需要设置一个 SSH 隧道,对吗?如果有更简单的方法请告诉我。
所以,有这个官方的mongo镜像,但我的印象ssh是没有安装或运行。做到这一点的最佳方法是什么?
更新:我在这里重新表述了这个问题,更关注端口转发
您必须使容器在同一网络上运行。无需 ssh 进入您的 mongo 或应用程序容器。
https://docs.docker.com/engine/userguide/networking/
首先定义一个网络
docker network create --driver bridge isolated_nw
Run Code Online (Sandbox Code Playgroud)
使用新网络启动容器
docker run -p 27017:27017 --network=isolated_nw -itd --name=mongo-cont mongo
docker run --network=isolated_nw -itd --name=app your_image
Run Code Online (Sandbox Code Playgroud)
mongo 的镜像包含 EXPOSE 27017,因此从您的应用程序容器中,您应该能够使用其名称访问 mongo 容器mongo-cont
您正在尝试通过 SSH进入您的容器以访问它,但这不是您的连接方式。Docker 提供了通过以下方法安全连接的功能。
连接到正在运行的容器 -文档:
docker exec -it <container name> bash
$ root@665b4a1e17b6:/#
Run Code Online (Sandbox Code Playgroud)
从图像启动一个容器,并连接到它 -文档:
docker run -it <image name> bash
$ root@665b4a1e17b6:/#
Run Code Online (Sandbox Code Playgroud)
注意:如果是基于Alpine的镜像,则可能没有安装 Bash。在这种情况下,在命令中使用sh而不是应该有效。bashMongo的Dockerfile看起来使用debian:jessie哪个都会有bash支持。
| 归档时间: |
|
| 查看次数: |
12047 次 |
| 最近记录: |