Docker安装Nacos单机的实现方式(配合宝塔)

 更新时间:2025年06月04日 09:03:29   作者:若水印象  
这篇文章主要介绍了Docker安装Nacos单机的实现方式(配合宝塔),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

一、事前准备

CentOs系统,安装了宝塔面板,安装了docker,云平台防火墙里开放8848端口,官网地址

宝塔-安全放行8848端口

记得使用firewall-cmd --list-port 查看一下linux有没有开放nacos的8848端口,未开启的需要在宝塔里开启或通过命令行开启。

当前我的是开放了8848端口,如果小伙伴没有开放呢,可以使用开启,–permanent表示永久有效,如果不加当前命令,表示重启后就不生效了。宝塔开启也是可以的。

firewall-cmd --zone=public --add-port=8848/tcp --permanent

开放后记得重启防火墙

firewall-cmd --reload

二、安装

1、镜像仓库中拉取最新版本

https://hub.docker.com/r/nacos/nacos-server

docker pull nacos/nacos-server

2、创建日志文件夹

mkdir -p /home/nacos/logs/

3、创建配置文件夹

mkdir -p /home/nacos/init.d/

4、nacos数据库导入

宿主机的mysql新建nacos的数据库,并执行脚本 sql脚本地址如下:

https://github.com/alibaba/nacos/blob/master/config/src/main/resources/META-INF/nacos-db.sql

5、运行nacos

docker run \
--name nacos -d \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--privileged=true \
--restart=always \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.17.0.1 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=nacos \
-e MYSQL_SERVICE_PASSWORD=JTbMMN8k4rHh3N8z \
-v /root/apply/docker/apply/nacos/logs:/home/nacos/logs \
-v /root/apply/docker/apply/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties \
-v /root/apply/docker/apply/nacos/data:/home/nacos/data \
nacos/nacos-server

解读

docker 启动容器
docker run \

容器名称叫nacos -d后台运行
--name nacos -d \

nacos默认端口8848 映射到外部端口8848
-p 8848:8848 \

naocs 应该是2.0版本以后就需要一下的两个端口 所以也需要开放
-p 9848:9848 
-p 9849:9849 
--privileged=true \

docker重启时 nacos也一并重启
--restart=always \

-e 配置 启动参数
配置 jvm
-e JVM_XMS=256m 
-e JVM_XMX=256m \

单机模式
-e MODE=standalone 
-e PREFER_HOST_MODE=hostname \

数据库是mysql 配置持久化 不使用nacos自带的数据库
-e SPRING_DATASOURCE_PLATFORM=mysql \

写自己的数据库地址
-e MYSQL_SERVICE_HOST=###### \

数据库端口号
-e MYSQL_SERVICE_PORT=3306 \

mysql的数据库名称
-e MYSQL_SERVICE_DB_NAME=nacos \

mysql的账号密码
-e MYSQL_SERVICE_USER=root 
-e MYSQL_SERVICE_PASSWORD=root \

-v 映射docker内部的文件到docker外部 我这里将nacos的日志 数据 以及配置文件 映射出来
映射日志
-v /root/apply/docker/apply/nacos/logs:/home/nacos/logs \

映射配置文件 (应该没用了 因为前面已经配置参数了)
-v /root/apply/docker/apply/nacos/init.d/custom.properties:/etc/nacos/init.d/custom.properties \

映射nacos的本地数据 也没啥用因为使用了mysql
-v /root/apply/docker/apply/nacos/data:/home/nacos/data \

启动镜像名称
nacos/nacos-server

三、常见问题

1、数据库配置

如果数据库是rds这种公网可以访问的数据库,直接写就可以

如果数据库在宿主机

docker里面的代码生成的数据需要写入到宿主机的Mysql服务器上,想要用本地的数据库测试自己的代码正确性,项目程序安装在docker容器中,于是必定要在docker容器里访问到本地的数据库。

(1)在docker容器里localhost并不是指宿主机的localhost,因此不能在容器中通过localhost:3306访问到宿主机的mysql,也不可以通过127.0.0.1访问。

(2)docker在运行时就建立了虚拟网卡,并命名为docker0,可以在宿主机上运行ifconfig看到它,这就是宿主机建立的网桥,用于与各个容器之间通信。

[root@VM-8-15-centos ~]# ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:53ff:fed0:4c11  prefixlen 64  scopeid 0x20<link>
        ether 02:42:53:d0:4c:11  txqueuelen 0  (Ethernet)
        RX packets 4489  bytes 6944799 (6.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3379  bytes 999348 (975.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

(3)宿主机在与容器同一局域网的IP地址一般是docker0对应的IP地址段的首个地址(如172.17.0.1),因此,可以在容器里通过172.17.0.1:3306访问到宿主机的mysql服务器。

mysql服务器默认的设置为允许127.0.0.1段的ip地址访问

如果用172.17.0.1:3306仍然无法访问到宿主机的话,需要设置一下mysql的访问权限:

如果用的是宝塔面板,可以给nacos这个数据库设置权限为所有人

 mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '12345678' WITH GRANT OPTION;
 mysql>flush privileges;
// 其中各字符的含义:
// *.* 对任意数据库任意表有效
// "root" "12345678" 是数据库用户名和密码
// '%' 允许访问数据库的IP地址,%意思是任意IP,也可以指定IP
// flush privileges 刷新权限信息

2、如何查看是否安装成功

1)安装后访问地址,有登录页面就是安装成功了,默认用户名和密码都是nacos

​ http://XXX.XXX.XXX.XXX:8848/nacos

2)宝塔面板点击左侧docker点击右侧nacos的日志来看是否正确运行,如果正确运行后是有如下字样的

2022-12-15 09:46:53,339 INFO Nacos started successfully in stand alone mode. use external storage

2022-12-15 09:47:15,057 INFO Initializing Servlet 'dispatcherServlet'

2022-12-15 09:47:15,090 INFO Completed initialization in 32 ms

3)日志提示成功,无法访问

首先需要排查的就是端口,腾讯云阿里云的端口是否打开?宝塔面板或防火墙的端口是否打开?

其次需要排查的就是数据库是否正确。

3)日志提示成功,无法访问

首先需要排查的就是端口,腾讯云阿里云的端口是否打开?宝塔面板或防火墙的端口是否打开?

其次需要排查的就是数据库是否正确。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • docker之docker-machine用法详解

    docker之docker-machine用法详解

    这篇文章主要介绍了docker之docker-machine用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Docker Compose部署及基础使用详解

    Docker Compose部署及基础使用详解

    这篇文章主要介绍了Docker Compose部署及基础使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • 关于docker部署服务时ip无法访问服务正常的问题

    关于docker部署服务时ip无法访问服务正常的问题

    小编在使用docker部署应用的时候,无法使用IP地址访问,防火墙已经关闭,可以ping通,应用已经配置0.0.0.0,怎么回事?下面小编给大家介绍下docker部署服务,ip无法访问,服务正常的解决方法,感兴趣的朋友一起看看吧
    2022-09-09
  • yum下载docker安装包安装到离线机器的实例代码详解

    yum下载docker安装包安装到离线机器的实例代码详解

    本文通过实例代码给大家介绍了yum下载docker安装包,安装到离线机器,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-12-12
  • 使用WSL修改docker文件存储位置具体步骤

    使用WSL修改docker文件存储位置具体步骤

    这篇文章主要为大家介绍了使用WSL修改docker文件存储位置具体步骤,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • 六种Docker目录挂载类型及注意事项总结

    六种Docker目录挂载类型及注意事项总结

    这篇文章主要介绍了六种Docker目录挂载方式,包括数据卷挂载、绑定挂载、临时文件系统挂载、命名卷挂载、匿名卷挂载和卷驱动挂载,并详细说明了每种挂载方式的定义、举例和注意事项,需要的朋友可以参考下
    2025-03-03
  • docker 运行指定内存的操作

    docker 运行指定内存的操作

    这篇文章主要介绍了docker 运行指定内存的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 通过Docker部署Redis 6.x集群的方法

    通过Docker部署Redis 6.x集群的方法

    这篇文章主要介绍了通过Docker部署Redis 6.x集群的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 使用Docker部署war包项目的实现

    使用Docker部署war包项目的实现

    这篇文章主要介绍了使用Docker部署war包项目的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Dokcer部署双主Mysql的详细步骤

    Dokcer部署双主Mysql的详细步骤

    文章介绍了如何创建MySQL主从复制容器,并配置主从关系,主要步骤包括创建容器、创建角色、配置MySQL从数据库以连接到主数据库,并确保配置参数正确,感兴趣的朋友一起看看吧
    2025-01-01

最新评论