安装docker
yum install docker
查找hbase
docker search hbase
1. `Cannot
connect to the
Docker
daemon at unix
:
///var/run/docker.sock. Is the docker daemon running?`
解决办法:sudo systemctl start docker
再运行docker search hbase
1. `INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED`
2. `docker.io docker.io/harisekhon/hbase Apache HBase, opens shell - pseudo-distrib... 86 [OK]`
3. `docker.io docker.io/dajobe/hbase HBase 2.1.2 in Docker 25`
4. `docker.io docker.io/nerdammer/hbase HBase pseudo-distributed (configured for l... 25 [OK]`
5. `docker.io docker.io/banno/hbase-standalone HBase master running in standalone mode on... 17 [OK]`
6. `docker.io docker.io/boostport/hbase-phoenix-all-in-one HBase with phoenix and the phoenix query s... 9 [OK]`
7. `docker.io docker.io/zenoss/hbase HBase image for Zenoss 5.0 9`
8. `docker.io docker.io/harisekhon/hbase-dev Apache HBase + dev tools, github repos, ps... 7 [OK]`
9. `docker.io docker.io/bde2020/hbase-standalone Standalone Apache HBase docker image. Suit... 5 [OK]`
10. `docker.io docker.io/bde2020/hbase-regionserver Regionserver Docker image for Apache HBase. 4 [OK]`
11. `docker.io docker.io/gradiant/hbase-base Hbase small footprint Image (Alpine based) 3 [OK]`
12. `docker.io docker.io/smizy/hbase Apache HBase docker image based on alpine 3 [OK]`
13. `docker.io docker.io/aaionap/hbase AAI Hbase 2`
14. `docker.io docker.io/bde2020/hbase-master Master docker image for Apache HBase. 2 [OK]`
15. `docker.io docker.io/f21global/hbase-phoenix-server HBase phoenix query server 1 [OK]`
16. `docker.io docker.io/imagenarium/hbase 1`
17. `docker.io docker.io/imagenarium/hbase-master 1`
18. `docker.io docker.io/imagenarium/hbase-regionserver 1`
19. `docker.io docker.io/newnius/hbase Setup a HBase cluster in a totally distrib... 1 [OK]`
20. `docker.io docker.io/pilchard/hbase Hbase 1.2.0 (CDH 5.11) with openjdk-1.8 1 [OK]`
21. `docker.io docker.io/cellos/hbase HBase on top of Alpine Linux 0`
22. `docker.io docker.io/iwan0/hbase-thrift-standalone hbase-thrift-standalone 0 [OK]`
23. `docker.io docker.io/pierrezemb/hbase-docker hbase in docker 0 [OK]`
24. `docker.io docker.io/pierrezemb/hbase-standalone Docker images to experiment with HBase 1.... 0 [OK]`
25. `docker.io docker.io/stellargraph/hbase-hadoop 0`
26. `docker.io docker.io/stellargraph/hbase-master`
docker images
1. `REPOSITORY TAG IMAGE ID CREATED SIZE`
2. `docker.io/dajobe/hbase latest cfd7eefee902 15 months ago 492 MB`
配置主机名与端口映射等
1. `docker run -d -h myhbase -p 2181:2181 -p 8080:8080 -p 8085:8085 -p 9090:9090 -p 9095:9095`
2. `-p 16000:16000 -p 16010:16010 -p 16201:16201 -p 16301:16301 --name hbase2 docker.io/dajobe/hbase`
简单解释:
- -h: 指定hostname
- -d : 后台启动
- -p: 指定端口映射
- --name: 指定名称
还可能做一些更多的映射以及docker 数据卷与宿主机的映射关系,此处没有用到,需要的请自行搜索
注意点
docker run -d --name hbase001 -p 16010:16010 docker.io/dajobe/hbase与docker run -d --name hbase001 -P docker.io/dajobe/hbase的区别:
- -p : 指定主机的端口 16010映射到宿主机上(容器)的开放端口 16010
- -P :主机随机分配端口与宿主机上的端口进行映射
执行:
1. `docker run -d -p 2181:2181 -p 8080:8080 -p 8085:8085 -p 9090:9090 -p 9095:9095 -p 16000:16000 -p 16010:16010 -p 16201:16201 -p 16301:16301 --name hbase2 docker.io/daj`
2. `obe/hbase`
结果:
1. `cdfb7e24c051bc69083d715be42ea32efe7d8584b4609e475707ac43e0b40206`
docker ps -a
1. `CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES`
2. `cdfb7e24c051 docker.io/dajobe/hbase "/opt/hbase-server" 6 seconds ago Up 5 seconds 0.0.0.0:2181->2181/tcp, 0.0.0.0:8080->8080/tcp, 0.0.0.0:8085->8085/tcp, 0.0.0.0:9090->9090/tcp, 0.0.0.0:9095->9095/tcp, 0.0.0.0:16000->16000/tcp, 0.0.0.0:16010->16010/tcp, 0.0.0.0:16201->16201/tcp, 0.0.0.0:16301->16301/tcp hbase2`
访问web界面
效果:
进入docker容器
有两种方式,attach和exec,我们选择exec:
1. `docker
exec
-
it hbase2 bash`
ps -aux|grep hbase即可查到端口、pid和目录信息:
- hbase目录在:/opt/hbase
- bin目录为:/opt/hbase/bin
主要命令
- docker images: 查看docker镜像
- docker ps -a:查看当前运行的docker镜像
- docker exec -it hbase2 bash: 进入hbase容器
- hbase当前目录:/opt/hbase
问题
ifconfig查看:
1. `docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500`
2. `inet 172.17.0.1 netmask 255.255.0.0 broadcast 0.0.0.0`
3. `ether 02:42:88:1e:cd:ff txqueuelen 0 (Ethernet)`
4. `RX packets 549 bytes 1092247 (1.0 MiB)`
5. `RX errors 0 dropped 0 overruns 0 frame 0`
6. `TX packets 465 bytes 43279 (42.2 KiB)`
7. `TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0`
8.
9. `eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500`
10. `inet 172.16.1.230 netmask 255.255.255.0 broadcast 172.16.1.255`
11. `ether 00:16:3e:16:6a:ac txqueuelen 1000 (Ethernet)`
12. `RX packets 3900038 bytes 2205407507 (2.0 GiB)`
13. `RX errors 0 dropped 0 overruns 0 frame 0`
14. `TX packets 2437734 bytes 1234635259 (1.1 GiB)`
15. `TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0`
16.
17. `lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536`
18. `inet 127.0.0.1 netmask 255.0.0.0`
19. `loop txqueuelen 1000 (Local Loopback)`
20. `RX packets 254754 bytes 147500058 (140.6 MiB)`
21. `RX errors 0 dropped 0 overruns 0 frame 0`
22. `TX packets 254754 bytes 147500058 (140.6 MiB)`
23. `TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0`
可以看到多出了个docker0网卡
然后systemctl restart network重启了下网卡,发现ip:16010访问不了了。。。。
猜想是docker0网卡的原因,于是删掉它:
1. `yum -y install bridge-utils`
2.
3. `ifconfig docker0 down`
4.
5. `brctl delbr docker0`
然后再重启网卡,问题解决。
主要命令
- docker images: 查看docker镜像
- docker ps -a: 查看当前运行的docker镜像
- docker exec -it hbase2 bash: 进入hbase容器
- hbase当前目录:/opt/hbase
- docker stop hbase2: 关闭容器
- docker rm hbase2:删除容器
- 容器内部安装vim:先apt-get update ,然后apt-get install vim
- docker logs hbase2:查看日志
问题1
ifconfig查看:
1. `docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500`
2. `inet 192.17.0.1 0`
3.
4. `eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500`
5. `0`
6.
7. `lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536`
8. `0`
可以看到多出了个docker0网卡
然后systemctl restart network重启了下网卡,发现ip:16010访问不了了。。。。
猜想是docker0网卡的原因,于是删掉它:
1. `yum -y install bridge-utils`
2.
3. `ifconfig docker0 down`
4.
5. `brctl delbr docker0`
然后再重启网卡,问题解决。
问题2
默认使用的网络模式是桥接模式,宿主机与容器的网络通过docker0网卡来通信,在这种模式下默认用容器id作为hostname的,需要在宿主机中配置容器ip与id的映射关系:
1. `192.17
.
0.1
3c38a154df21`
问题3
以host网络模式启动命令:
1. `docker run -d --net=host --name hbase2 docker.io/dajobe/hbase`
这种模式的特点是容器和宿主机共享网络,达不到网络隔离的效果。