目录
- 引言:
- Docker Nacos 单个部署
- 1.1 什么是 Docker?
- Docker 的概念和工作原理
- Docker 为什么受到广泛应用和认可
- 1.2 什么是 Nacos?
- Nacos 的核心功能和特点
- Nacos 在微服务架构中的作用
- 1.3 Docker 单个部署 Nacos
- Docker Nacos 集成部署
- 总结:
引言:
“在当今快节奏的软件开发环境中,容器化技术和服务注册与发现已成为不可或缺的一部分。Docker 是一种流行的容器化平台,而 Nacos 是一个强大的服务注册与发现工具。本篇博客将深入讨论 Docker 和 Nacos 在单个部署与集成部署方面的细节和高级技巧,帮助读者更好地理解和应用这两项技术。”
Docker Nacos 单个部署
1.1 什么是 Docker?
Docker 的概念和工作原理
Docker 是一种容器化平台,它允许开发人员将应用程序及其依赖项打包到一个可移植的容器中,然后发布到任何支持 Docker 的环境中。Docker 的工作原理是利用 Linux 内核的 cgroups 和 namespaces 功能,通过将应用程序和其依赖项打包到容器中,实现了应用程序与其运行环境的隔离,从而实现了跨平台的部署。
Docker 为什么受到广泛应用和认可
Docker 受到广泛应用和认可的原因有几点:首先,Docker 提供了一种轻量级、快速部署的解决方案,使得开发人员可以更加便捷地构建、交付和运行应用程序。其次,Docker 容器可以在不同的环境中保持一致的运行,从开发环境到测试环境再到生产环境,这种一致性大大简化了部署和维护的复杂性。此外,Docker 社区庞大,拥有丰富的容器镜像和工具,使得开发人员可以更加高效地构建和管理容器化应用。因此,Docker 成为了现代应用程序开发和部署的重要工具之一。
1.2 什么是 Nacos?
Nacos 的核心功能和特点
Nacos 是阿里巴巴开源的一款服务发现、配置管理和服务管理平台。其核心功能包括服务发现与注册、动态配置管理、服务健康监测和流量管理。Nacos 的特点在于其支持多种部署模式(包括单机模式、集群模式和多数据中心模式)、提供了丰富的开箱即用的功能(如服务发现、动态配置、服务路由等),并且具有良好的扩展性和高可用性。
Nacos 在微服务架构中的作用
在微服务架构中,Nacos 扮演着重要的角色。首先,Nacos 提供了服务发现与注册的功能,使得微服务可以动态地注册和发现其他微服务,从而实现了微服务之间的通信和协作。其次,Nacos 的动态配置管理功能可以帮助微服务实现配置的动态更新和管理,使得微服务在不停机的情况下可以灵活地调整配置。此外,Nacos 的服务健康监测和流量管理功能可以帮助微服务实现自动化的健康检查和流量控制,保障微服务的稳定性和可靠性。因此,Nacos 在微服务架构中扮演着重要的角色,是微服务架构中不可或缺的基础设施之一。
1.3 Docker 单个部署 Nacos
确保拉取了mysql,我已经拉取好了
docker pull mysql:5.7
然后再创三个文件定义挂载目录
mkdir -p mysql/{conf,data,script}
去到conf文件里面,拖一个my.cnf文件进去
运行,创建一个m1的镜像
docker run \
--name m1 \
-v /mysql/conf/my.cnf:/etc/my.cnf \
-v /mysql/data:/var/lib/mysql \
-v /mysql/script:/script \
--privileged=true \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql/mysql-server:5.7
然后再拉一个sql文件到scipt
进去m1并登录数据库
如果没有权限,就赋权,可远程访问
grant all on . to root@‘%’ identified by ‘123456’;
创建数据库,进入nacos并运行sql文件
查看
退出数据库然后拉取nacos镜像
查看开放端口
firewall-cmd --zone=public --list-ports
开启8848防火墙
firewall-cmd --zone=public --add-port=8848/tcp --permanent
更新防火墙
firewall-cmd --reload
然后创建运行nacos容器
docker run -itd \
-e PREFER_HOST_MODE=ip \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.17.0.2 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-p 8848:8848 \
--name nacos \
nacos/nacos-server
重启m1
碰到个小插曲,进行远程访问设置时单词打错
grant all on *.* to root@'%' identified by '123456';
docker logs -f nacos 查看实时日志,出现下面successfully绿色的就好了
这个时候就可以访问登录了
Docker Nacos 集成部署
需要用到一个自定义网络,我的已经定义好了mynet
docker network create --subnet 172.20.0.1/16 网络名称
把m1和mynet连接起来
docker network connect mynet m1
上一个nacos已经占用了8848端口,给它清掉
docker rm -f nacos
运行
docker run -itd \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVERS="172.20.0.102:8848 172.20.0.103:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=m1 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-p 8848:8848 \
--name nacos01 \
--net mynet \
--ip 172.20.0.101 \
--restart=always \
nacos/nacos-server
再次进入,跑起来了
再运行nacos2,nacos3
docker run -itd \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVERS="172.20.0.101:8848 172.20.0.103:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=m1 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
--name nacos02 \
--net mynet \
--ip 172.20.0.102 \
--restart=always \
nacos/nacos-server
docker run -itd \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVERS="172.20.0.101:8848 172.20.0.102:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=m1 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
--name nacos03 \
--net mynet \
--ip 172.20.0.103 \
--restart=always \
nacos/nacos-server
- 然后实现负载均衡
在根目录下创建个nginx文件,再创建个conf.d文件
进入到里面去
vim default.conf新建编辑文件
放入以下代码反向代理
#服务器的集群
upstream nacosList { server nacos01:8848 weight=1; server nacos02:8848 weight=1; server nacos03:8848 weight=1;
} server {listen 80;server_name www.zkingedu.com;location / {root /etc/nginx/html/;index index.html index.htm;}error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}location /nacos {proxy_pass http://nacosList;}}
退出保存
然后再开一个nginx容器
docker run -itd \
--name nginx \
-v /nginx/conf.d:/etc/nginx/conf.d \
-p 80:80 \
--net mynet \
nginx
负载均衡实行成功
总结:
本篇博客深入讨论了 Docker 和 Nacos 在单个部署和集成部署方面知识。通过学习和理解这些内容,读者将能够更好地应用 Docker 和 Nacos 技术,提升软件开发和部署的效率和质量。希望本文能给读者带来启发和帮助,谢谢阅读!