当前位置: 首页 > news >正文

Docker 安装 Nacos 2.1.1(单机版)

一、拉取镜像

docker pull nacos/nacos-server:v2.1.1

二、新建数据库

官网上下载 对应版本的 nacos zip 包,在 nacos\conf 目录下有 mysql脚本:

新建一个数据库 nacos_config,在数据库中依次执行 nacos-mysql.sql、1.4.0-ipv6_support-update.sql

三、创建用户

-- 创建用户
CREATE USER 'nacos'@'%' IDENTIFIED BY 'nacos';
-- 授予用户对 nacos_config 数据库的所有权限
GRANT ALL PRIVILEGES ON nacos_config.* TO 'nacos'@'%';
-- 刷新权限
FLUSH PRIVILEGES;

四、启动容器

如果 mysql 跟 nacos 都用 docker 安装在同一台虚拟机,有两种方式启动:

4.1、使用 mysql 虚拟IP

  • 使用命令查出 mysql 虚拟IP
docker inspect mysql | grep IP

  • 启动 nacos 时指定这个IP
docker run -d \
--name nacos \
--restart=always \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
-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_config \
-e MYSQL_SERVICE_USER=nacos \
-e MYSQL_SERVICE_PASSWORD=nacos \
-v /home/nacos/logs:/home/nacos/logs \
nacos/nacos-server:v2.1.1
  • -d:以守护进程模式在后台运行容器。
  • --name nacos:为容器指定名称为 nacos,方便后续管理。
  • --restart=always:它表示无论容器因为何种原因退出(包括正常退出和异常退出),Docker 守护进程都会自动重启该容器。比如当服务器重启、容器内部服务崩溃导致容器退出等情况发生时,容器都能自动重新启动,以提高容器内服务的可用性。
  • -p [宿主机端口]:[容器端口]
  • -p 8848:8848:将容器内 Nacos 服务默认的 HTTP 端口 8848 映射到主机的 8848 端口。
  • -p 9848:9848 和 -p 9849:9849:用于 Nacos 集群通信的端口映射。
  • -e MODE=standalone:指定以单机模式启动 Nacos。
  • -e SPRING_DATASOURCE_PLATFORM=mysql:指定使用 MySQL 作为数据源。
  • -e MYSQL_SERVICE_HOST=172.17.0.2:指定 MySQL 服务器的主机地址(注意不能写 127.0.0.1)。
  • -e MYSQL_SERVICE_PORT=3306:指定 MySQL 服务器的端口号。
  • -e MYSQL_SERVICE_DB_NAME=nacos_config:指定 Nacos 使用的数据库名称。
  • -e MYSQL_SERVICE_USER=nacos:指定连接 MySQL 的用户名。
  • -e MYSQL_SERVICE_PASSWORD=nacos:指定连接 MySQL 的密码。
  • -v /home/nacos/logs:/home/nacos/logs:将宿主机 /home/nacos/logs 目录挂载到容器内 /home/nacos/logs 日志目录,方便查问题。

这种方式适合于 mysql 容器已经创建,且没有创建网络的情况,当 mysql 容器重启时,IP 是会变的,这个时候,nacos 就连不上了。

4.1、使用容器网络

  • 创建一个新的容器网络
docker network create mysql_nacos_network

这将允许你连接多个容器到同一个网络中,从而它们可以相互通信。这里的 mysql_nacos_network 是你的自定义网络的名字,你可以根据需要更改它。

  •  启动容器并连接到自定义网络

当你启动容器时,可以使用 --network 参数指定该容器应该加入到哪个网络中。

启动 MySQL 容器

docker run -d \
--name mysql \
--restart=always \
--network mysql_nacos_network \
-p 3306:3306 \
--privileged=true \
-v /home/mysql/log:/var/log \
-v /home/mysql/data:/var/lib/mysql \
-v /home/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:8.0.30

 启动 Nacos 容器

docker run -d \
--name nacos \
--restart=always \
--network mysql_nacos_network \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=mysql \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_USER=nacos \
-e MYSQL_SERVICE_PASSWORD=nacos \
-v /home/nacos/logs:/home/nacos/logs \
nacos/nacos-server:v2.1.1

一旦两个容器都连接到了同一个 Docker 自定义网络,它们就可以通过容器名称直接相互访问了。例如,在上面的例子中,Nacos 容器可以通过 mysql 这个名称来访问 MySQL 容器,而不需要知道其具体的 IP 地址。

-e MYSQL_SERVICE_HOST=mysql

这种方法不仅简化了容器之间的网络配置,还提高了可读性和维护性。此外,当某个容器重启后,它的 IP 地址可能会改变,但是容器名称不会变,因此使用名称来进行容器间通信更加稳定可靠。

  • 查看网络连接情况
docker network inspect mysql_nacos_network

可以看到两个容器都在同一网络。

  • nacos ping mysql
docker exec nacos ping mysql

 可以 ping 通,说明网络没问题。

五、访问控制台

使用 nacos 默认账户名、密码 nacos/nacos

六、使用内置数据库

docker run -d \
--name nacos \
--restart=always \
--network mysql_nacos_network \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
-e MODE=standalone \
nacos/nacos-server:v2.1.1

 如果不想连接外部数据库,可以使用内置数据库快速启动 nacos。

相关文章:

  • Ubuntu下MySQL的安装与使用(一)
  • 新手学习爬虫的案例
  • LLM时代的小模型思考:《What is the Role of Small Models in the LLM Era: A Survey》论文笔记
  • yolov7-3d算法原理
  • Git与GitHub:理解两者差异及其关系
  • 题海拾贝:P9241 [蓝桥杯 2023 省 B] 飞机降落
  • 初识脑机接口情绪识别
  • Express 中 get 参数获取
  • 51 单片机中断控制寄存器 TCON
  • Python爬虫:爬虫基础知识
  • 解决电脑问题(2)——主板问题
  • MySQL面试篇——性能优化
  • 微分方程家族:常微分方程(ODE)、偏微分方程(PDE)和随机微分方程(SDE)
  • Redis-主从架构
  • SQL SELECT DISTINCT 语句
  • JavaSE-5 类和对象
  • 51单片机之蓝牙模块的使用
  • 图神经网络的健壮性(五)
  • STL map 的 lower_bound(x)、upper_bound(x) 等常用函数
  • 2025年渗透测试面试题总结-长某亭科技-安全服务工程师(一面)(题目+回答)
  • 全景网站如何建设/西安做网站
  • 婚礼婚庆网站建设需求分析/网络平台怎么创建需要多少钱
  • 成都网站logo设计/台州网络推广
  • 网站开发怎样转h5页面/论坛推广怎么做
  • 塘沽做网站公司/佛山网站搜索排名
  • 二维码分销系统免费/一个企业seo网站的优化流程