這篇文章詳細(xì)介紹了如何部署并在 Docker 容器里運(yùn)行 NSQ 二進(jìn)制文件。
這有一個(gè)最小化的 NSQ 鏡像文件,它包含了所有的 NSQ 二級(jí)制文件。每個(gè)二進(jìn)制文件可以通過(guò)命令指定運(yùn)行?;靖袷饺缦拢?/p>
docker run nsqio/nsq /<command>
注意命令前的 /,例如:
docker run nsqio/nsq /nsq_to_file
docker pull nsqio/nsq
docker run --name lookupd -p 4160:4160 -p 4161:4161 nsqio/nsq /nsqlookupd
首先,得到 docker 主機(jī) ip:
ifconfig | grep addr
接著,運(yùn)行 nsqd 容器:
docker pull nsqio/nsq
docker run --name nsqd -p 4150:4150 -p 4151:4151 \
nsqio/nsq /nsqd \
--broadcast-address=<host> \
--lookupd-tcp-address=<host>:<port>
設(shè)置 --lookupd-tcp-address 標(biāo)志位到主機(jī) IP,以及之前運(yùn)行的 TCP 端口:
nsqlookupd, i.e. dockerIP:4160:
例如,指定主機(jī)IP 172.17.42.1:
docker run --name nsqd -p 4150:4150 -p 4151:4151 \
nsqio/nsq /nsqd \
--broadcast-address=172.17.42.1 \
--lookupd-tcp-address=172.17.42.1:4160
注意:這里使用端口 4160,端口暴露了什么我們什么開(kāi)始運(yùn)行 nsqlookupd 容器 (它也是 nsqlookupd 的端口)。
如果你不想使用默認(rèn)端口,改變 -p 參數(shù):
docker run --name nsqlookupd -p 5160:4160 -p 5161:4161 nsqio/nsq /nsqlookupd
它將會(huì)使得 nsqlookupd 在主機(jī) IP 上的端口 5160 和 5161 可用。
如果在 NSQ 容器上使用 TLS,你必須包含證書(shū)文件,私鑰文件,和根 CA 文件。Docker 鏡像里 /etc/ssl/certs/ 包含這些內(nèi)容。掛載一個(gè)主機(jī)文件夾包含這些文件,并在命令行里指定,比如:
docker run -p 4150:4150 -p 4151:4151 -p 4152:4152 -v /home/docker/certs:/etc/ssl/certs \
nsqio/nsq /nsqd \
--tls-root-ca-file=/etc/ssl/certs/certs.crt \
--tls-cert=/etc/ssl/certs/cert.pem \
--tls-key=/etc/ssl/certs/key.pem \
--tls-required=true \
--tls-client-auth-policy=require-verify
上面的代碼,運(yùn)行的時(shí)候?qū)?huì)從 /home/docker/certs 里加載文件到 Docker 容器里。
使用 /data 目錄來(lái)存儲(chǔ) nsqd 到主機(jī)磁盤(pán)上,它能讓你加載到 data-only Docker container ,或者加載主機(jī)文件夾里:
docker run nsqio/nsq /nsqd \
--data-path=/data