“深入理解 Docker 和 Nacos 的单个部署与集成部署“

目录

  • 引言:
  • 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 技术,提升软件开发和部署的效率和质量。希望本文能给读者带来启发和帮助,谢谢阅读!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/416985.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java8 列表通过 stream流 根据对象属性去重的三种实现方法

java8 列表通过 stream流 根据对象属性去重的三种实现方法 一、简单去重 public class DistinctTest {/*** 没有重写 equals 方法*/SetterGetterToStringAllArgsConstructorNoArgsConstructorpublic static class User {private String name;private Integer age;}/*** lombo…

积分梳状滤波器CIC原理与实现

CIC(Cascade Intergrator Comb):级联积分梳状滤波器,是由积分器和梳状滤波器级联而得。滤波器系数为1,无需对系数进行存储,只有加法器、积分器和寄存器,资源消耗少,运算速率高&#…

MyBatis 使用报错: Can‘t generate mapping method with primitive return type

文章目录 前言问题原因解决方案个人简介 前言 今天在新项目中使用 MyBatis 报如下错误:Cant generate mapping method with primitive return type 问题原因 发现是 Mapper 注解引入错误,错误引入 org.mapstruct.Mapper, 实际应该引入 org.apache.ibat…

python实操之网络爬虫介绍

一、什么是网络爬虫 网络爬虫,也可以叫做网络数据采集更容易理解。它是指通过编程向网络服务器(web)请求数据(HTML表单),然后解析HTML,提取出自己想要的数据。 它包括了根据url获取HTML数据、解…

6.4.4释放音频

6.4.4释放音频 许多Flash动画里的音乐或歌曲非常好听,能不能在没有源文件的情况下把里面的声音文件取出来呢?利用Swf2VideoConverter2可以轻松做到这一点。 1.单击“添加”按钮,在弹出的下拉菜单中选择“添加文件”,…

火速收藏!2024 新年微信红包封面领取全攻略

2024“龙”重登场!今年有哪些令人期待的红包封面? 前方大批精美红包封面来袭,全新品牌氛围红包封面上线,支持品牌定制特色氛围元素,沉浸感受浓浓年味儿,收获满满惊喜! 新年开好运,微…

1432 - 走出迷宫的最少步数-广搜

代码 #include<bits/stdc.h> using namespace std; char a[51][51]; int r,c; int fx[4]{0,0,1,-1}; int fy[4]{1,-1,0,0}; int tx,ty; struct Node{int x,y,step; }; int bfs(int x,int y){a[x][y]#;queue<Node> q;q.push({x,y,1});while(!q.empty()){Node Curre…

小白快速上手maven【基础篇】

Maven的概念和作用 Maven是什么&#xff1f;POM的概念 Maven的作用&#xff1f; 提供自动化构建项目的方式&#xff0c;并且统一了项目的结构管理项目中的依赖 Maven基础概念-仓库&#xff0c;坐标&#xff0c;仓库配置 仓库&#xff1a;用于存储各种jar包资源 根据功能的不…

git本地分支的合并

目录 第一章、本地分支的切换测试1.1&#xff09;切换之前的master分支下文件内容1.2&#xff09;切换到develop分支后修改文件1.3&#xff09;切回master分支出现报错&#xff1a;1.4&#xff09;报错分析 第二章、解决方式2.1&#xff09;方式1&#xff1a;commit2.2&#xf…

NFS 共享存储服务

一、存储和NFS共享 1.存储类型分为三种 直连式存储&#xff1a;Direct-Attached Storage&#xff0c;简称DAS 网络附加存储&#xff1a;Network-Attached Storage&#xff0c;简称NAS 存储区域网络&#xff1a;Storage Area Network&#xff0c;简称SAN DAS:存储和主机是直连…

【JupyterLab】在 conda 虚拟环境中 JupyterLab 的安装与使用

【JupyterLab】在 conda 虚拟环境中 JupyterLab 的安装与使用 1 JupyterLab 介绍2 安装2.1 Jupyter Kernel 与 conda 虚拟环境 3 使用3.1 安装中文语言包(Optional)3.2 启动3.3 常用快捷键3.3.1 命令模式下 3.4 远程访问个人计算机3.4.1 局域网下 1 JupyterLab 介绍 官方文档: …

PMIC 基础知识浅析(四)

PMIC 后端研究现状&#xff1a; 现今针对便携式移动平台的电源管理芯片仍以传统分离型 PMIC为主。 根据后端设计的特点&#xff0c;传统分离型 PMIC 又可分三大类。 控制芯片与开关 MOSFET 分离型&#xff0c;MOSFET 外置于PCB上&#xff0c;芯片仅提供智能控制功能。 此类IC…