簡體   English   中英

將mongo端口暴露在其他容器中

[英]Expose mongo port in other container

我有這個(自定義)容器,它運行一個需要本地mongo的Java程序。 現在,使用docker,我想在自己的容器中設置mongo。 所以我想,為了在此java容器中本地公開此27017端口,我需要設置一個SSH隧道,對嗎? 如果有更簡單的方法,請告訴我。

因此,有此官方的mongo映像映像,但給我的印象是ssh沒有安裝或運行。 這樣做的最佳方法是什么?

更新:我將問題改寫為此處更關注端口轉發

您正在嘗試通過SSH 進入您的容器來訪問它,但這不是您的連接方式。 Docker提供了通過以下方法安全連接的功能。

連接到正在運行的容器- 文檔

docker exec -it <container name> bash
$ root@665b4a1e17b6:/#

從圖像啟動一個容器,然后連接到它-Docs

docker run -it <image name> bash
$ root@665b4a1e17b6:/#

注意:如果它是基於Alpine的映像,則可能未安裝Bash。 在這種情況下,在命令中使用sh代替bash應該可以。 Mongo的Dockerfile似乎使用debian:jessie ,它將支持bash

您可以在mongodb官方映像之上構建自定義映像,這使您可以靈活地安裝其他必需的軟件包。

FROM mongo:latest
RUN apt-get install ssh

另外,嘗試使用docker-compose將容器構建並鏈接在一起,這將大大簡化此過程。

version: '2'
services:
  mongo:
    image: mongo:latest
    ports:
      - "27017"

  custom_project:
    build:
      context: .  # Parent directory address of Dockerfile
      dockerfile: Dockerfile-Custom  # Name of Dockerfile
    command: /root/docker-entrypoint.sh

是用於mongodb官方圖像的圖像。

您必須使容器在同一網絡上運行。 無需使用SSH進入您的mongo或應用程序容器。

https://docs.docker.com/engine/userguide/networking/

首先定義一個網絡

docker network create --driver bridge isolated_nw

使用該新網絡啟動容器

docker run -p 27017:27017 --network=isolated_nw -itd --name=mongo-cont mongo
docker run --network=isolated_nw -itd --name=app your_image

mongo的映像包含EXPOSE 27017,因此從您的應用容器中,您應該能夠使用其名稱mongo-cont訪問mongo容器

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM