簡體   English   中英

docker-compose網絡/端口處理

[英]docker-compose network / ports handling

我有兩個組成部分: 作為主機的hbas&ookeeper和主機中的hbase-printer(我的Java代碼)。 我的目標是打印一些hbase表的內容。 問題是到2181(動物園管理員端口)的連接成功,但是比起我被定向到側面隨機端口進行通信並且此端口未暴露。 我正在使用docker-compose.yml

version: '2'
services:
  hbase:
    image: dy1-dockerv2-local.jfrog.io/hbase:latest
    restart: always
    hostname: hbase-docker
    ports:
      - "60010:60010"
      - "60000:60000"
      - "60020:60020"
      - "60030:60030"
      - "9095:9095"
      - "8085:8085"
      - "8080:8080"
      - "2181:2181"
      - "9091:9091"
      - "9090:9090"
    expose:
      - "9091"
      - "2181"
    volumes:
      - ./data/hbase:/data
      - ./logs/hbase/:/opt/hbase/logs
    network_mode: "bridge"

在我的Java日志中,我得到:

23-02-2017 09:29:54,413 INFO [ClientCnxn]: [main-SendThread(localhost:2181)] Session establishment complete on server localhost/127.0.0.1:2181, sessionid = 0x15a69d8a7a30006, negotiated timeout = 40000
23-02-2017 09:30:16,955 INFO [HBaseRPC]: [main] Problem connecting to server: hbase-docker/172.17.0.2:39521

在主機中,我可以看到偵聽端口:

$ netstat -na | grep LISTEN
tcp6       0      0  ::1.2181               *.*                    LISTEN
tcp4       0      0  *.2181                 *.*                    LISTEN
tcp6       0      0  ::1.8080               *.*                    LISTEN
tcp4       0      0  *.8080                 *.*                    LISTEN
tcp6       0      0  ::1.8085               *.*                    LISTEN
tcp4       0      0  *.8085                 *.*                    

(以及我在docker-compose.yml文件中定義的其余端口

在容器中,我看到:

root@hbase-docker:/# netstat -na | grep LISTEN
tcp6       0      0 172.17.0.2:39521        :::*                    LISTEN
tcp6       0      0 :::2181                 :::*                    LISTEN
tcp6       0      0 :::60010                :::*                    LISTEN
tcp6       0      0 172.17.0.2:32785        :::*                    LISTEN
tcp6       0      0 :::43189                :::*                    LISTEN

我看到側面端口39521在容器內部可用,但沒有暴露給主機。 我無法將其添加到我docker-compose.yml因為它是隨機更改的(看起來像介於30000-50000之間)。 如何將隨機端口暴露給主機?

您最喜歡面對https://issues.apache.org/jira/browse/HBASE-10289 (已在0.99.0和0.98.4中修復)。 作為對答案的評論,您仍在使用舊版本的hbase,可能<0.99.0。

您應該嘗試使用更新版本的hbase。 例如,您將在Docker Hub上找到一個: https : //hub.docker.com/r/dajobe/hbase/

暫無
暫無

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

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