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

news2024/9/17 8:38:39

目录

  • 引言:
  • 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.coloradmin.cn/o/1399111.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

sfml使用opengl着色器实现2d水面波浪

SFML中使用GLSL着色器来绘制水波。 效果 代码 #include <SFML/Graphics.hpp> #include <iostream>int main() {const int WIDTH = 800;

用C语言实现简单的三子棋游戏

目录 1 -> 模块简介 2 -> test.c 3 -> game.c 4 -> game.h 1 -> 模块简介 test.c:测试游戏逻辑 game.c: 函数的实现 game.h:函数的声明 2 -> test.c #define _CRT_SECURE_NO_WARNINGS 1#include "game.h";void menu() {printf("****…

大模型学习与实践笔记(七)

一、环境配置 1.平台&#xff1a; Ubuntu Anaconda CUDA/CUDNN 8GB nvidia显卡 2.安装 # 构建虚拟环境 conda create --name xtuner0.1.9 python3.10 -y # 拉取 0.1.9 的版本源码 git clone -b v0.1.9 https://github.com/InternLM/xtuner# 从源码安装 XTuner pip insta…

python爬取图片(thumbURL和html文件标签分别爬取)

当查看源代码&#xff0c;发现网址在thumbURL之后时&#xff0c;用此代码: # 当查看源代码&#xff0c;发现网址在thumbURL之后时&#xff0c;用此代码:import requestsheaders {User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121…

typing python 类型标注学习笔记

在Python 3.5版本后引入的typing模块为Python的静态类型注解提供了支持。这个模块在增强代码可读性和维护性方面提供了帮助。 目录 简介为什么需要 Type hints typing常用类型typing初级语法typing基础语法默认参数及 Optional联合类型 (Union Type)类型别名 (Type Alias)子类型…

tcp/ip协议2实现的插图,数据结构7 (27 - 章)

(166) 166 二七1 TCP的函数 函tcp_drain,tcp_drop (167) (168)

【AI Superman workshop】AI excel类工具体验

本打卡参与活动&#xff1a;AI Superman workshop&#xff0c;由奇想星球平台与Datawhale联合举办 ChatExcel https://chatexcel.com/ 示例数据 体验内容 1、哪个城市的订单最多&#xff1f; 2、哪个城市的订单最少&#xff1f; 这里能看出订单最少的城市有几十个都为…

CVPR 2023 Hybrid Tutorial: All Things ViTs之DINO attention map

All Things ViTs系列讲座从ViT视觉模型注意力机制出发,本文给出DINO attention map可视化部分阅读学习体会. 课程视频与课件: https://all-things-vits.github.io/atv/ 代码:https://colab.research.google.com/github/all-things-vits/code-samples/blob/main/probing/dino_at…

Windows 11 UEFI引导修复的方法有哪些?

若Windows 11 UEFI 引导加载程序损坏了&#xff0c;您的电脑将无法启动&#xff0c;那么Win11怎么修复UEFI引导&#xff1f;下面我们就来了解一下。 通过自动修复进行UEFI引导修复 1. 将可启动U盘连接到损坏的电脑&#xff0c;进入BIOS设置您的电脑从U盘启动电脑。然后&#x…

红队打靶练习:W34KN3SS: 1

目录 信息收集 1、arp 2、nmap 3、nikto 4、gobuster 5、dirsearch WEB web信息收集 目录探测 漏洞利用 openssl密钥碰撞 SSH登录 提权 get user.txt get passwd 信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# arp-scan -l Interface: eth0, type: EN10MB…

接口测试遇到500报错?别慌,你的头部可能有点问题

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

SSE[Server-Sent Events]实现页面流式数据输出(模拟ChatGPT流式输出)

文章目录 前言SSE 简介应用场景区分浏览器支撑性 实现过程Web VUE核心解析数据代码实例demo参考 前言 服务端向客户端推送消息&#xff0c;除了用WebSocket可实现&#xff0c;还有一种服务器发送事件(Server-Sent Events)简称 SSE&#xff0c;这是一种服务器端到客户端(浏览器)…

idea上传本地项目到gitlab

1. idea上传本地项目到gitlab 1. 配置idea里本地安装的git位置 即选择 Settings -> Version Control -> Git -> Path to Git executable 2. 在idea创建本地仓库 即选择 VCS -> Create Git Repository 然后选择目录&#xff0c;默认就是选择的当前项目&#xff…

(学习日记)2024.01.19

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

C和指针课后答案

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 第八章课后答案 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参…

ISA Server 2006部署网站对比nginx

2024年了&#xff0c;我还是第1次使用ISA Server 。没办法在维护一个非常古老的项目。说到ISA Server可能有小伙们不清楚&#xff0c;但是说到nginx大家应该都知道吧。虽然他们俩定位并不相同&#xff0c;但是本文中提到的需求&#xff0c;他俩是都可以实现。 网上找的到的教程…

全网最详细丨2024年AMC8真题及答案来了

目录 前言 真题回忆 真题解析 结尾 前言 相信大家都已经知道今年AMC8出事情了吧&#xff0c;但最重要的还是要从中学到新知识。 听说今年考生被提前12分钟强制交卷了&#xff0c;肯定因为试题泄露了。 最新回复&#xff1a;我们这边已经退费了 真题回忆 需要word文档的请…

基于JavaWeb+SSM+Vue基于微信小程序的网上商城系统的设计和实现

基于JavaWebSSMVue基于微信小程序的网上商城系统的设计和实现 滑到文末获取源码Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 滑到文末获取源码 Lun文目录 目录 1系统概述 1 1.1 研究背景 1 1.2研究目的 1 1.3系统设计思想…

应届生必读:Java真实项目的开发流程和常用工具

目录 1 接需求和前期设计 2 敏捷开发模式 3 开发、测试与测试环境 4 项目部署细节说明 5 监控系统&#xff0c;解决线上问题 6 项目管理和部署工具 7 代码管理工具 8 Java项目开发的常用组件 9 测试类工具 10 数据库服务器及其客户端组件 11 linux连接组件 12 总结…

Helm Dashboard — Kubernetes 中管理 Helm 版本的 GUI

Helm Dashboard 通过提供图形用户界面&#xff0c;使在 Kubernetes 中管理 Helm 版本变得更加容易&#xff0c;这是许多开发人员所期望的。它可用于在 Kubernetes 中创建、部署和更新应用程序的版本&#xff0c;并跟踪其状态。 本文将探讨 Helm Dashboard 提供的特性和优势&am…