本人有一个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容器的该端口啊
L'absence de port HDFS ipc est un bug dans le
.sequenceiq/hadoop-docker
image séquenceiq/hadoop-docker#48 Bien qu'il ait été corrigé (voir : https://github.com/sequenceiq..., son mainteneur l'a fait. Je n'ai pas construit de nouvelle version de l'image, ce qui vous pose encore des problèmes pour l'utiliser maintenantLa solution est très simple, il suffit d'ajouter
docker run
manuellement au paramètre après-p 9000:9000
.À propos, bien que le site Hadoop mentionne l'image
sequenceiq/hadoop-docker
docker, à en juger par sonDockerfile
écriture, son auteur a une compréhension superficielle de Docker et ne suit pas les meilleures pratiques officiellesDockerfile
de Docker. À titre indicatif, l'image est très pléthorique et mal réalisée. Si vous en avez la possibilité, vous devez suivre les directives officielles des meilleures pratiques pour personnaliser l’image dont vous avez besoin.