docker深入1-使用docker运行nsq


一、在10.0.200.21上测试
首先pull一个nsq的镜像
docker pull nsqio/nsq

二、启动容器
1)运行docker容器lookupd
[root@svr200-21 docker]# docker run -d --name lookupd -p 4160:4160 -p 4161:4161 nsqio/nsq /nsqlookupd
f37732ecb5a667da072bbdb132c0f7d616dca528885202152592267ac2a2cbdc

2)得到容器lookupd所在的docker host的IP地址:
[root@svr200-21 docker]# docker inspect -f '{{ .NetworkSettings.IPAddress }}' lookupd
172.17.0.22

3)运行docker容器nsqd
[root@svr200-21 docker]# docker run -d --name nsqd -p 4150:4150 -p 4151:4151 nsqio/nsq /nsqd --broadcast-address=172.17.0.22 --lookupd-tcp-address=172.17.0.22:4160
181da12ff439e47187a65bb003e45d838d1740ffb0a1bb7adb689df4354e4f9e

4)运行docker容器nsqadmin
[root@svr200-21 docker]# docker run -d --name nsqadmin -p 4171:4171 nsqio/nsq /nsqadmin  --lookupd-http-address=172.17.0.22:4161
5cc90923902ce864b5632a4e1a406e4dbd8e4fd092f49b8159d10efa499df9d6

5)开放宿主机10.0.200.21的防火墙
-A INPUT -p tcp -m state --state NEW -m tcp --dport 4150:4151 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 4160:4161 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 4171 -j ACCEPT


查看docker容器:
[root@svr200-21 docker]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                                            NAMES
5cc90923902c        nsqio/nsq:latest    "/nsqadmin --lookupd   3 seconds ago       Up 3 seconds        0.0.0.0:4171->4171/tcp                           nsqadmin            
181da12ff439        nsqio/nsq:latest    "/nsqd --broadcast-a   11 seconds ago      Up 11 seconds       0.0.0.0:4150->4150/tcp, 0.0.0.0:4151->4151/tcp   nsqd                
f37732ecb5a6        nsqio/nsq:latest    "/nsqlookupd"          51 seconds ago      Up 50 seconds       0.0.0.0:4160->4160/tcp, 0.0.0.0:4161->4161/tcp   lookupd   



通过http://10.0.200.21:4171来访问nsqadmin