此系列文章将会描述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 :9700:9700 \

-p 9601:9601 \

--restart=always \

jeromefromcn/dubbo-monitor

Dubbo微服务

# Dubbo微服务

docker run -d \

--name \

--net dubbo \

-e DUBBO_IP_TO_REGISTRY= \

-e DUBBO_PORT_TO_REGISTRY= \

-p :: \

-v dubbo:/log \

--restart=always \

\

--spring.profiles.active=

Docker常用命令

命令里使用${CONTAINER_ID}与${CONTAINER_NAME}均可

查看容器状态

docker ps | grep ${CONTAINER_ID}

查看容器日志

docker logs ${CONTAINER_ID}

交互式进入容器中

docker exec -i -t ${CONTAINER_ID} sh

查看容器底层信息

docker inspect ${CONTAINER_ID}

镜像打包

docker commit -m "message" -a "author" ${CONTAINER_ID} ${NEW_IMAGE_NAME}

标签

docker tag ${IMAGE_TAG} ${NEW_IMAGE_TAG}

推送至对应仓库

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

参考资料:

《容器与容器云》

手机回收价格怎么算?2026年四大平台实测:转转比爱回收多卖220元+FAQ
那年花开月正圆 电视原声带