1. 程式人生 > >微服務框架(七)Docker容器部署(Dubbo、Zookeeper、Dubbo-admin)

微服務框架(七)Docker容器部署(Dubbo、Zookeeper、Dubbo-admin)

  此係列文章將會描述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

參考資料:

  1. 《容器與容器雲》