“深入理解 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.rhkb.cn/news/243769.html

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

相关文章

如何使用固定公网地址访问多个本地Nginx服务搭建的网站

文章目录 1. 下载windows版Nginx2. 配置Nginx3. 测试局域网访问4. cpolar内网穿透5. 测试公网访问6. 配置固定二级子域名7. 测试访问公网固定二级子域名 本文主要介绍如何在Windows系统对Nginx进行配置,并结合cpolar内网穿透工具实现固定公网地址远程访问多个本地站…

Spring Boot整合Redis的高效数据缓存实践

引言 在现代Web应用开发中,数据缓存是提高系统性能和响应速度的关键。Redis作为一种高性能的缓存和数据存储解决方案,被广泛应用于各种场景。本文将研究如何使用Spring Boot整合Redis,通过这个强大的缓存工具提高应用的性能和可伸缩性。 整合…

操作系统导论-课后作业-ch14

1. 代码如下&#xff1a; #include <stdio.h> #include <stdlib.h>int main() {int *i NULL;free(i);return 0; }执行结果如下&#xff1a; 可见&#xff0c;没有任何报错&#xff0c;执行完成。 2. 执行结果如下&#xff1a; 3. valgrind安装使用参考&a…

接口自动化测试(Python+Requests+Unittest)

(1)接口自动化测试的意义、前后端分离思想 接口自动化测试的优缺点&#xff1a; 优点&#xff1a; 1、测试复用性。 2、维护成本相对UI自动化低一些。 为什么UI自动化维护成本更高&#xff1f; 因为前端页面变化太快&#xff0c;而且UI自动化比较耗时&#xff08;比如等待页…

常见PCB封装

表面贴片封装 通孔封装 公众号 | FunIO 微信搜一搜 “funio”&#xff0c;发现更多精彩内容。 个人博客 | blog.boringhex.top

基于神经网络的电力系统的负荷预测

一、背景介绍&#xff1a; 电力系统负荷预测是生产部门的重要工作之一&#xff0c;通过准确的负荷预测&#xff0c;可以经济合理地安排机组的启停、减少旋转备用容量、合理安排检修计划、降低发电成本和提高经济效益。负荷预测按预测的时间可以分为长期、中期和短期负荷预测。…

使用pysimplegui+opencv编写一个摄像头的播放器

需求 使用pysimplegui和opencv实现一个播放器&#xff0c;播放 摄像头的画面。 代码实现 import cv2 import time from typing import Iterable, NamedTuple, Optionalimport PySimpleGUI as sgclass CameraSpec(NamedTuple):name: strindex: intwidth: intheight: intfps: i…

记一次 stackoverflowerror 线上排查过程

一.线上 stackOverFlowError xxx日,突然收到线上日志关键字频繁告警 classCastException.从字面上的报警来看,仅仅是类型转换异常,查看细则发现其实是 stackOverFlowError.很多同学面试的时候总会被问到有没有遇到过线上stackOverFlowError?有么有遇到栈溢出?具体栈溢出怎么来…

网络爬虫采集工具

在当今数字化的时代&#xff0c;获取海量数据对于企业、学术界和个人都至关重要。网络爬虫成为一种强大的工具&#xff0c;能够从互联网上抓取并提取所需的信息。本文将专心分享关于网络爬虫采集数据的全面指南&#xff0c;深入探讨其原理、应用场景以及使用过程中可能遇到的挑…

【论文阅读笔记】Swin-Unet: Unet-like Pure Transformer for Medical Image Segmentation

1.介绍 Swin-Unet: Unet-like Pure Transformer for Medical Image Segmentation Swin-Unet&#xff1a;用于医学图像分割的类Unet纯Transformer 2022年发表在 Computer Vision – ECCV 2022 Workshops Paper Code 2.摘要 在过去的几年里&#xff0c;卷积神经网络&#xff…

OTA 升级软件推荐,附带MD5,CRC16,CRC32,AES算法工具

说明&#xff1a;推荐 OTA 工具软件&#xff0c;可以通过串口按 OTA 协议发送 bin 文件给 MCU,完成 bootloader 升级app 功能 , 这个软件 附带提供 MD5,CRC16,CRC32,AES 算法工具。 文档持续完善中... 1. OTA界面 2.AES.MD5.CRC界面 3.下载链接&#xff1a; 链接: https://p…

AI创作之旅:探索提示工程的奇妙世界

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 在当今信息爆炸的时代&#xff0c;人工智能的发…

k8s的helm

1、在没有helm之前&#xff0c;部署deployment、service、ingress等等 2、helm的作用&#xff1a;通过打包的方式&#xff0c;deployment、service、ingress这些打包在一块&#xff0c;一键部署服务、类似于yum功能 3、helm&#xff1a;官方提供的一种类似于仓库的功能&#…

为什么电脑降价了?

周末&#xff0c;非常意外地用不到3000元买到了一款2023年度发布的华为笔记本I5,16G,500G&#xff0c;基本是主流配置&#xff0c;我非常意外&#xff0c;看了又看&#xff0c;不是什么Hwawii&#xff0c;或者Huuawe。然后也不是二手。为什么呢&#xff1f;因为在ALU和FPU之外&…

Android.mk和Android.bp的区别和转换详解

Android.mk和Android.bp的区别和转换详解 文章目录 Android.mk和Android.bp的区别和转换详解一、前言二、Android.mk和Android.bp的联系三、Android.mk和Android.bp的区别1、语法&#xff1a;2、灵活性&#xff1a;3、版本兼容性&#xff1a;4、向后兼容性&#xff1a;5、编译区…

【C++修行之道】STL(初识pair、vector)

目录 一、pair 1.1pair的定义和结构 1.2pair的嵌套 1.3pair自带排序规则 1.4代码示例 二、vector 2.1vector的定义和特性 2.2vector的初始化 一维初始化&#xff1a; 2.3vector的常用函数 2.4vector排序去重 排序: 去重&#xff1a; 示例&#xff1a; 一、pair …

CmakeList教程

一、CmakeList介绍&#xff1a; cmake 是一个跨平台、开源的构建系统。它是一个集软件构建、测试、打包于一身的软件。它使用与平台和编译器独立的配置文件来对软件编译过程进行控制。它会通过写的语句自动生成一个MakeFile,从而实现高效编译 二、CmakeList的常用指令 1.指定…

iphone5s基带部分电源部分主主电源供电及

时序: 1.,基带电源的供电&#xff0c;基带电源也叫pmu。 首先时序图说电池提供供电&#xff0c;电池是J6接口&#xff0c;视频习惯把接口称之为座子。查U2_RF芯片&#xff0c;发现供电信号为PP_BATT_VCC_CONN&#xff0c;但是没查到跟电池座子有关系&#xff0c;电池座子写的是…

回溯算法篇-01:全排列

力扣46&#xff1a;全排列 题目分析 这道题属于上一篇——“回溯算法解题框架与思路”中的 “元素不重复不可复用” 那一类中的 排列类问题。 我们来回顾一下当时是怎么说的&#xff1a; 排列和组合的区别在于&#xff0c;排列对“顺序”有要求。比如 [1,2] 和 [2,1] 是两个不…

电脑磁盘格式化了怎么恢复里面文件?多个方法任你选

在日常生活中&#xff0c;我们可能会遇到由于误操作、病毒攻击等原因导致电脑磁盘被格式化的情况。一旦发生这种情况&#xff0c;我们可能会失去重要的文件&#xff0c;给工作和生活带来很大的困扰。但是&#xff0c;不必过于担心&#xff0c;本文将为您详细介绍如何在电脑磁盘…