微服務框架(七)Docker容器部署(Dubbo、Zookeeper、Dubbo-admin)
阿新 • • 發佈:2019-01-04
此係列文章將會描述Java框架Spring Boot、服務治理框架Dubbo、應用容器引擎Docker,及使用Spring Boot整合Dubbo、Mybatis等開源框架,其中穿插著Spring Boot中日誌切面等技術的實現,然後通過gitlab-CI以持續整合為Docker映象。
本文為Docker容器部署,包括Dubbo微服務、Zookeeper、Dubbo-admin的部署
本系列文章中所使用的框架版本為Spring Boot 2.0.3-RELEASE,Spring 5.0.7-RELEASE,Dubbo 2.6.2。
Docker容器啟動引數
執行引數說明:
- -d: 後臺執行容器,並返回容器ID
- -i: 以互動模式執行容器,通常與-t同時使用
- -t: 為容器重新分配一個偽輸入終端,通常與 -i 同時使用
- –name: 為容器指定一個名稱
- -e: 設定環境變數
- –env-file: 從指定檔案讀取環境變數
- -p: 埠對映,如果不做埠對映,容器外部無法訪問容器內部
- -v: 檔案掛載
- –link: 新增連結到容器,在default網路下,預設不會將容器名稱解析到容器IP地址,必須要新增link選項才可以。而在自定義網路下,則不需要新增此選項
更多選項可以檢視docker文件
Docker容器部署
網路介面及資料卷
# 建立網路介面
sudo docker network create zookeeper
sudo docker network create dubbo
# volumn建立,用來持久化資料
sudo docker volume create background
sudo docker volume create dubbo
Zookeeper
# zookeeper註冊中心
sudo docker run -d \
--name zookeeper \
--net zookeeper \
--net dubbo \
-v background:/var/lib/zookeeper/data \
-p 2181 :2181 \
-p 2888:2888 \
-p 3888:3888 \
--restart=always \
jplock/zookeeper:3.4.11
dubbo-admin
# dubbo-admin管理中心
docker run -d \
--name dubbo-admin \
--net zookeeper \
-v background:/data \
-p 9600:8080 \
-e DUBBO_REGISTRY="zookeeper:\/\/ip:port" \
-e DUBBO_ROOT_PASSWORD=root \
-e DUBBO_GUEST_PASSWORD=guest \
--restart=always \
riveryang/dubbo-admin
dubbo-monitor
# dubbo-monitor監控中心
docker run -d \
--name dubbo-monitor \
--net zookeeper \
-v background:/dubbo-monitor/data \
-e DUBBO_IP_TO_REGISTRY=ip \
-e DUBBO_PORT_TO_REGISTRY=9700 \
-p <ip>:9700:9700 \
-p 9601:9601 \
--restart=always \
jeromefromcn/dubbo-monitor
Dubbo微服務
# Dubbo微服務
docker run -d \
--name <containerName> \
--net dubbo \
-e DUBBO_IP_TO_REGISTRY=<ip> \
-e DUBBO_PORT_TO_REGISTRY=<port> \
-p <ip>:<port>:<port> \
-v dubbo:/log \
--restart=always \
<imageName> \
--spring.profiles.active=<env>
Docker常用命令
檢視容器狀態
docker ps | grep ${CONTAINER_ID}
檢視容器日誌
docker logs ${CONTAINER_ID}
互動式進入容器中
docker exec -i -t ${IMAGE_NAME} sh
映象打包
docker commit -m "message" -a "author" ${CONTAINER_ID} ${NEW_IMAGE_NAME}
標籤
docker tag ${IMAGE_NAME} ${NEW_IMAGE_NAME}
推送至對應倉庫
docker push ${REGISTRY_URL}/${IMAGE_NAME}
刪除所有退出的容器
docker rm $(docker ps -a | grep Exit | awk '{ print $1 }')
刪除所有名稱為none的映象
docker images | grep none | awk '{print $3} ' | xargs docker rmi
參考資料:
- 《容器與容器雲》