本文为Docker容器部署,包括Dubbo微服务、Zookeeper、Dubbo-admin的部署
本系列文章中所使用的框架版本为Spring Boot 2.0.3-RELEASE,Spring 5.0.7-RELEASE,Dubbo 2.6.2。
Docker容器启动参数
1 2 3 4 5 6 7 8 9 10 11
| 本文用到的运行参数说明:
-d: 后台运行容器,并返回容器ID -i: 以交互模式运行容器,通常与-t同时使用 -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用 –name: 为容器指定一个名称 -e: 设置环境变量 –env-file: 从指定文件读取环境变量 -p: 端口映射,如果不做端口映射,容器外部无法访问容器内部 -v: 文件挂载 –link: 添加链接到容器,在default网络下,默认不会将容器名称解析到容器IP地址,必须要添加link选项才可以。而在自定义网络下,则不需要添加此选项
|
更多选项可以查看docker文档
Docker容器部署
网络接口及数据卷
1 2 3 4 5 6 7
| # 创建网络接口 sudo docker network create zookeeper sudo docker network create dubbo
# volumn创建,用来持久化数据 sudo docker volume create background sudo docker volume create dubbo
|
Zookeeper
1 2 3 4 5 6 7 8 9 10 11
| # 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
1 2 3 4 5 6 7 8 9 10 11
| # 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
1 2 3 4 5 6 7 8 9 10 11
| # 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微服务
1 2 3 4 5 6 7 8 9 10 11
| # 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