本人有一个3节点hadoop, 启动了3个docker容器, 众所周知, docker容器内服务的端口是可以映射到宿主机的端口的, 我采用-P将容器的所有端口映射到主机端口, 命令如下:
docker run -it -v /Users/yc/hadoop/docker:/test -P -h h1 --name h1 sequenceiq/hadoop-docker /etc/bootstrap.sh -bash
这是第master节点的启动脚本, 映射了一个宿主机目录, 映射了所有容器端口到宿主机, 而且设置了容器的hostname
当我查看进程的时候
docker ps
结果如下, 我做了下美化:
b96b897c6532 sequenceiq/hadoop-docker "/etc/bootstrap.sh -b"
24 minutes ago Up 24 minutes
0.0.0.0:32797->2122/tcp,
0.0.0.0:32796->8030/tcp,
0.0.0.0:32795->8031/tcp,
0.0.0.0:32794->8032/tcp,
0.0.0.0:32793->8033/tcp,
0.0.0.0:32792->8040/tcp,
0.0.0.0:32791->8042/tcp,
0.0.0.0:32790->8088/tcp,
0.0.0.0:32789->19888/tcp,
0.0.0.0:32788->49707/tcp,
0.0.0.0:32787->50010/tcp,
0.0.0.0:32786->50020/tcp,
0.0.0.0:32785->50070/tcp,
0.0.0.0:32784->50075/tcp,
0.0.0.0:32783->50090/tcp
h1
我们常用的50070和8088都映射出来了, 但是9000没有, 我知道9000这个协议是hdfs, 可能不属于tcp, 那么如何在我宿主机访问啊
我想用IDEA开发hadoop的java程序, 输入输出目录都得是 hdfs:ip:9000/目录 这种形式的, 不知道如何访问docker容器的该端口啊
Ketiadaan port ipc HDFS ialah pepijat dalam
.sequenceiq/hadoop-docker
jujukan imej/hadoop-docker#48 Walaupun ia telah diperbaiki (lihat: https://github.com/sequenceiq..., penyelenggaranya telah tidak membina versi baharu imej, menyebabkan anda masih menghadapi masalah menggunakannya sekarangPenyelesaiannya sangat mudah, cuma tambah
docker run
secara manual pada parameter selepas-p 9000:9000
.Sebenarnya, walaupun tapak web Hadoop menyebut
sequenceiq/hadoop-docker
imej docker, berdasarkan tulisanDockerfile
nya, pengarangnya mempunyai pemahaman yang cetek tentang Docker dan tidak mengikut amalan terbaikDockerfile
rasmi Docker sebagai praktikal garis panduan, imej sangat kembung dan tidak dibuat dengan baik. Jika anda mempunyai keupayaan, anda harus mengikut garis panduan amalan terbaik rasmi untuk menyesuaikan imej yang anda perlukan.