Docker 容器內執行 Dubbo 服務

2021-09-30 21:06:14 字數 820 閱讀 9321

原文:

在使用 docker 容器內執行 dubbo 服務的時候乙個令人很頭痛的問題就是服務位址註冊。

docker 容器內有自己的 ip 段,和宿主主機是隔離的,dubbo 會使用容器內的 ip 註冊到 zookeeper 註冊中心上。這樣其他的服務是無法訪問的。

乙個很直接的方案就是直接使用 docker 的--host選項:

docker run --name my-micro-server -d --host --restart=always my-micro-server-image
這樣 docker 容器將會和宿主主機共享網路。自然就不會有 ip 註冊問題了。

但是,當你的機器含有多個虛擬網絡卡是,dubbo 有時會抽風,包括你在 window 環境下除錯是 comsumer 的 ip 也會抽風。

其實 dubbo 提供了乙個環境變數dubbo_ip_to_registry,當次環境變數存在時,dubbo 會使用次環境變數的值去註冊。因此我們把啟動容器指令碼改為:

docker run --name my-micro-server -d -p 8080:8080 -p 28880:28880 --restart=always -e dubbo_ip_to_registry=192.168.2.2  my-micro-server-image
上面的 ip 和埠根據實際情況填寫。完美解決註冊 ip 亂掉的問題。

容器 docker 內執行Nginx

容器內執行nginx其實很簡單,但是一開始還是浪費了我很多時間。這裡寫下來給大家省點時間。1 建立nginx資料夾,放置各種配置及日誌等。mkdir docker nginxdocker 資料夾是我存放所有基礎設施容器的地方。2 建立nginx配置檔案 cd docker nginx vim ngi...

Docker 進入容器,並在容器內執行命令

2.檢視正在執行的容器 3.使用 exec 進入容器 4.推薦的配置 docker exec options container command arg.i 讓容器的標準輸入 stdin 始終保持開啟,即使沒有輸入任何指令 沒有附加 t 分配乙個終端,這樣我們就可以使用命令來操作 d 分離模式,讓命...

docker 在容器外執行某個容器內的某個命令

有時候我們想執行某個容器的某條命令,但又不想進入容器內。那該怎麼辦?於是指令碼可以這樣寫 docker id 62f3f40ab240 sudo docker exec it docker id bin bash c cd packages detectron python tools train....