我有兩個組成部分:hbas&ookeeper as single container和我的主機HBase的打印機(我的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
文件
和容器中,我定義請參閱:
[email protected]:/# 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之間的東西)。 如何將隨機端口暴露給我的主機?
您可以檢查安裝在容器/圖像中的HBase的版本? –
@AlexanderBlock 0.94.26 - 我知道這是一箇舊的,但它是我在生產中使用的那個(不是碼頭化的) – ItayB