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

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 此系列文章将会描述Java框架**Spring Boot**、服务治理框架**Dubbo**、应用容器引擎**Docker**,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。  **本文为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常用命令

这里写图片描述

命令里使用${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

参考资料:

  1. 《容器与容器云》
相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
10天前
|
Kubernetes 持续交付 Docker
现代后端开发中的微服务架构与容器化技术
本文探讨了现代后端开发中微服务架构与容器化技术的重要性和应用。微服务架构通过服务的拆分和独立部署提升了系统的灵活性和可维护性,而容器化技术则为微服务的快速部署和管理提供了解决方案。文章深入分析了微服务架构的优势、挑战以及如何利用容器化技术来支持微服务架构的实现。最后,通过实际案例展示了微服务与容器化技术在提升应用开发效率和系统稳定性方面的应用实践。【7月更文挑战第5天】
|
9天前
|
消息中间件 编解码 Docker
Docker部署RabbitMQ消息中间件
【7月更文挑战第4天】Docker部署RabbitMQ消息中间件
43 3
|
7天前
|
存储 Java Docker
使用Docker部署Java应用的最佳实践
使用Docker部署Java应用的最佳实践
|
1天前
|
弹性计算 运维 Kubernetes
自动化运维的新篇章:容器编排与微服务架构
【7月更文挑战第14天】在数字化转型的浪潮中,企业对运维效率和系统可靠性的需求日益增长。本文深入探讨了自动化运维的最新趋势——容器编排和微服务架构,并阐述了如何通过这些技术提升运维效率、降低系统复杂性以及提高服务的可用性和可扩展性。文章不仅介绍了相关技术和工具的选择,还提供了实际案例分析,旨在为读者提供一套完整的解决方案框架,以适应快速变化的市场需求。
|
2天前
|
Kubernetes 监控 Docker
现代后端开发中的微服务架构与容器化技术
传统的单体应用架构在面对现代大规模应用需求时已显不足,微服务架构及其伴随的容器化技术因其灵活性和可伸缩性成为了主流选择。本文探讨了微服务架构的优势及其与传统架构的对比,详细分析了容器化技术如何支持微服务的部署与管理,以及实际应用中的最佳实践。 【7月更文挑战第13天】
6 2
|
5天前
|
运维 Kubernetes 开发者
现代后端开发中的微服务架构与容器化技术
在当今快速发展的软件开发领域中,微服务架构和容器化技术日益成为开发者关注的焦点。本文将探讨微服务架构的优势、常见的容器化解决方案以及它们如何共同推动后端开发的现代化进程。 【7月更文挑战第9天】
16 5
|
3天前
|
弹性计算 运维 开发者
探索后端技术的未来:微服务与容器化的融合之路
本文旨在探讨后端技术的演进趋势,特别聚焦于微服务架构和容器化技术的融合。文章首先回顾了后端技术的发展简史,随后深入分析微服务架构的优势及其面临的挑战,接着讨论了容器化技术如何为微服务提供支持,并最终展望这两种技术结合后对后端开发的影响。通过具体案例和技术比较,本文旨在提供一个关于后端技术未来方向的全面视角。
|
5天前
|
运维 Kubernetes 开发者
现代后端开发中的微服务架构与容器化技术
本文探讨了现代后端开发中微服务架构与容器化技术的重要性及其应用。微服务架构通过将复杂的应用拆分为独立的服务单元,提升了系统的可扩展性和灵活性。容器化技术(如Docker和Kubernetes)则为微服务的部署与管理提供了高效的解决方案,极大地简化了开发者的工作流程。文章还分析了微服务与容器化技术的优势、挑战以及实际应用场景,旨在帮助开发者更好地理解和应用这些技术,提升软件开发的效率和质量。 【7月更文挑战第9天】
|
7天前
|
存储 Java Docker
使用Docker部署Java应用的最佳实践
使用Docker部署Java应用的最佳实践
|
7天前
|
存储 移动开发 程序员
Docker部署Dillinger个人文本编辑器
【7月更文挑战第6天】Docker部署Dillinger个人文本编辑器
21 1