Docker 網絡
Docker容器運行的時候有host、bridge、none三種網絡可供配置。
默認是bridge,即橋接網絡,以橋接模式連接到宿主機;host是宿主網絡,即與宿主機共用網絡;none則表示無網絡,容器將無法聯網。
當容器使用host網絡時,容器與宿主共用網絡,這樣就能在容器中訪問宿主機網絡,那么容器的localhost就是宿主機的localhost,命令--network host
,此時沒有必要使用端口映射-p 80:80 -p 443:443
來映射端口,是因為本身與宿主機共用了網絡,容器中暴露端口等同於宿主機暴露端口。
Docker獲取rocketmq 鏡像
docker search xxx
可以搜索鏡像都有哪些
-
docker pull rocketmqinc/rocketmq
拉取官方鏡像,注意:如果這里加上版本號,例如rocketmqinc/rocketmq:4.4.0,雖然現在測試的就是4.4.0版本,但是編輯broker.conf時候會權限不夠,這里很奇怪,不知道為什么 -
docker run -itd -p 9876:9876 --name rmqnamesrv rocketmqinc/rocketmq sh mqnamesrv
開啟mqnamesrv服務
鏡像和上面的相同不需要重新拉取
docker run -itd -p 10911:10911 -p 10909:10909 --name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=rmqnamesrv:9876" rocketmqinc/rocketmqsh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf
開啟broker服務,rmqnamesrv:9876
為mqnamesrv服務的地址(容器名:端口),因為橋接了網絡,才可以使用容器名:端口
修改conf/broker.conf,添加
brokerIP1=外網ip
(不能用docker的ip,即便是橋接網絡也不行,必須是外網IP),然后重啟broker服務
可視化界面
-
docker pull styletang/rocketmq-console-ng
拉取可視化界面鏡像,這里選取star最多的鏡像 -
docker run -e "JAVA_OPTS=-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8080:8080 -itd --name rocketmq-console styletang/rocketmq-console-ng
開啟可視化界面服務,rmqnamesrv:9876
為mqnamesrv服務的地址(這里好像有點問題,具體我也不知道應該寫docker地址還是外網地址,知道的麻煩留言告訴我)
給這三個服務創建橋接網絡
docker network create my-net
# 創建了一個名為"my-net"的網絡docker network connect my-net rmqnamesrv
docker network connect my-net rmqbroker
docker network connect my-net rocketmq-console
docker network inspect my-net
#查看橋接網絡信息