微服務框架(七)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. 《容器與容器雲》
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章