docker安装nacos2.2.4图文详解(含:nacos容器启动参数、环境变量、常见问题整理)

 更新时间:2025年02月05日 10:32:49   作者:飞火流星02027  
文章详细介绍了如何在Docker中下载、安装和配置Nacos 2.2.4,包括在线和离线安装步骤、使用不同网络模式(如Host模式)以及一些常见问题的解决方法,感兴趣的朋友跟随小编一起看看吧

一、镜像下载

1、在线下载

在一台能连外网的linux上执行docker镜像拉取命令

docker pull nacos:2.2.4

2、离线包下载

两种方式:

方式一:

-)在一台能连外网的linux上安装docker执行第一步的命令下载镜像

-)导出

# 导出镜像到本地当前目录
docker save -o nacos-2.2.4.tar nacos:2.2.4

方式二:

-)Window桌面程序:Docker Desktop

-)下载镜像

-)安装镜像导出插件(说明过程就复用了之前mysql的图)

-)将镜像文件保存到window本地(图略)

3、发布历史 | Nacos 官网

官方的下载地址,k8s环境用不上,因为官方没有发布镜像(自行打镜像的除外)

二、安装

1、在线安装

见离线安装(只比离线安装少一步导入动作)

2、离线安装

-)导入镜像

docker load -i nacos-2.2.4.tar

-)查看镜像

[docker@GZ***-PM153160 ~]$ docker images
REPOSITORY                                       TAG       IMAGE ID       CREATED         SIZE
nacos/nacos-server                               v2.2.4    f151dab7a111   19 months ago   814MB

-)创建映射目录

创建mysql配置文件目录、数据文件目录,并修改目录权限(不想挂载外部配置的此步聚可以跳过,nacos本身的日志查看容器日志一般也够用)

sudo mkdir -p /opt/nacos/docker-nacos/conf
sudo mkdir -p /data1/nacos/docker-nacos/log
sudo chown -R docker.docker /opt/nacos
# 作者data1目录下全是docker用户程序数据,所以没有指定子目录
sudo chown -R docker.docker /data1
# sudo chown -R docker.docker /data1/nacos

-)启动容器

docker run \
 --name smet-nacos \
 --network="host" \
 -e PREFER_HOST_MODE=ip \
 -e MODE=standalone \
 -e SPRING_DATASOURCE_PLATFORM=mysql \
 -e MYSQL_SERVICE_HOST=10.130.***.160 \
 -e MYSQL_SERVICE_PORT=3307 \
 -e MYSQL_SERVICE_DB_NAME=nacos \
 -e MYSQL_SERVICE_USER=nacos \
 -e MYSQL_SERVICE_PASSWORD='#!FlG*****' \
 -e NACOS_APPLICATION_PORT=8848 \
 -p 18848:8848 -p 19848:9848 -p 19849:9849 \
 -e MYSQL_SERVICE_DB_PARAM="characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true" \
 -e NACOS_AUTH_TOKEN="bmFjb3MuY29yZS5hdXRoLnBsdWdpbi5uYWNvcy50**********=" \
 -e NACOS_AUTH_ENABLE=true \
 -e NACOS_AUTH_CACHE_ENABLE=true \
 -e NACOS_SERVER_TIMEOUT=5000 \
 -v /opt/nacos/docker-nacos/application.properties:/home/nacos/conf/application.properties \
 -d f151dab7a111

这个命令做了以下几件事:

--name smet-nacos:给容器命名为smet-nacos

--network="host":主机网络模式

-e PREFER_HOST_MODE=ip   使用IP模式

 -e MODE=standalone   单机模式

 -e SPRING_DATASOURCE_PLATFORM=mysql  :使用mysql数据源

 -e MYSQL_SERVICE_HOST=10.130.***.160  : mysql主机ip(与网络模式有关)

 -e MYSQL_SERVICE_PORT=3307  : mysql主机port(与网络模式有关)

 -e MYSQL_SERVICE_DB_NAME=nacos  : 数据库名

 -e MYSQL_SERVICE_USER=nacos : 数据库用户名

 -e MYSQL_SERVICE_PASSWORD='#!FlG****'  : 数据库用户密码

 -e NACOS_APPLICATION_PORT=8848   : nacos端口

 -e MYSQL_SERVICE_DB_PARAM="characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true" :mysql jdbc 连接参数

 -e NACOS_AUTH_TOKEN="bmFjb3MuY29yZS5hdXRoLnBsdWdpbi5uYWNvcy50b2tlbi5zZWNyZXQua2V5LnNtZXQ="  : 鉴权token(可选)

 -e NACOS_AUTH_ENABLE=true : 鉴权开关(可选,与NACOS_AUTH_TOKEN配套)

 -e NACOS_SERVER_TIMEOUT=5000  : nacos服务超时时间

 -v /opt/nacos/docker-nacos/application.properties:/home/nacos/conf/application.properties :配置文件映射 (可选)

-p 18848:8848 -p 19848:9848 -p 19849:9849

-d :让容器在后台运行

f151dab7a111 : 使用的镜像id

-)查看容器

[docker@GZ***-PM153160 ~]$ docker ps
CONTAINER ID   IMAGE         COMMAND                  CREATED          STATUS          PORTS NAMES
54d8c2684e70   f151dab7a111  "bin/docker-startup.…"   33 minutes ago   Up 33 minutes         smet-nacos

-)日志

OpenJDK 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
OpenJDK 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
         ,--.
       ,--.'|
   ,--,:  : |                                           Nacos 2.2.4
,`--.'`|  ' :                       ,---.               Running in stand alone mode, All function modules
|   :  :  | |                      '   ,'\   .--.--.    Port: 8848
:   |   \ | :  ,--.--.     ,---.  /   /   | /  /    '   Pid: 1
|   : '  '; | /       \   /     \.   ; ,. :|  :  /`./   Console: http://10.130.153.160:8848/nacos/index.html
'   ' ;.    ;.--.  .-. | /    / ''   | |: :|  :  ;_
|   | | \   | \__\/: . ..    ' / '   | .; : \  \    `.      https://nacos.io
'   : |  ; .' ," .--.; |'   ; :__|   :    |  `----.   \
|   | '`--'  /  /  ,.  |'   | '.'|\   \  /  /  /`--'  /
'   : |     ;  :   .'   \   :    : `----'  '--'.     /
;   |.'     |  ,     .-./\   \  /            `--'---'
'---'        `--`---'     `----'
2025-01-30 21:15:42,440 INFO Tomcat initialized with port(s): 8848 (http)
2025-01-30 21:15:42,514 INFO Root WebApplicationContext: initialization completed in 3358 ms
2025-01-30 21:15:46,030 INFO Adding welcome page: class path resource [static/index.html]
2025-01-30 21:15:46,697 WARN You are asking Spring Security to ignore Ant [pattern='/**']. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead.
2025-01-30 21:15:46,698 INFO Will not secure Ant [pattern='/**']
2025-01-30 21:15:46,724 INFO Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@5cf3157b, org.springframework.security.web.context.SecurityContextPersistenceFilter@4adc663e, org.springframework.security.web.header.HeaderWriterFilter@3240b2a4, org.springframework.security.web.csrf.CsrfFilter@1e1e9ef3, org.springframework.security.web.authentication.logout.LogoutFilter@74e6094b, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@8bd86c8, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@2d3ef181, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@625dfff3, org.springframework.security.web.session.SessionManagementFilter@7d3fb0ef, org.springframework.security.web.access.ExceptionTranslationFilter@31c628e7]
2025-01-30 21:15:46,754 INFO Exposing 1 endpoint(s) beneath base path '/actuator'
2025-01-30 21:15:46,819 INFO Tomcat started on port(s): 8848 (http) with context path '/nacos'
2025-01-30 21:15:46,845 INFO Nacos started successfully in stand alone mode. use external storage

-)从容器内部拷贝配置文件

可选

[docker@GZ***-PM153160 ~]$ docker cp 54d8c2684e70:/home/nacos/conf/application.properties /opt/nacos/docker-nacos/application.properties
Successfully copied 12.3kB to /opt/nacos/docker-nacos/application.properties

-)调整其他配置(可选)

vi /opt/nacos/docker-nacos/application.properties

按需修改后,删除原容器,添加配置文件映射参数后重新创建容器

docker run \
 --name smet-nacos \
 --network="host" \
 -e PREFER_HOST_MODE=ip \
 -e MODE=standalone \
 -e SPRING_DATASOURCE_PLATFORM=mysql \
 -e MYSQL_SERVICE_HOST=10.130.***.160 \
 -e MYSQL_SERVICE_PORT=3307 \
 -e MYSQL_SERVICE_DB_NAME=nacos \
 -e MYSQL_SERVICE_USER=nacos \
 -e MYSQL_SERVICE_PASSWORD='#!FlG*****' \
 -e NACOS_APPLICATION_PORT=8848 \
 -p 18848:8848 -p 19848:9848 -p 19849:9849 \
 -e MYSQL_SERVICE_DB_PARAM="characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true" \
 -e NACOS_AUTH_TOKEN="bmFjb3MuY29yZS5hdXRoLnBsdWdpbi5uYWNvcy50**********=" \
 -e NACOS_AUTH_ENABLE=true \
 -e NACOS_AUTH_CACHE_ENABLE=true \
 -e NACOS_SERVER_TIMEOUT=5000 \
 -v /opt/nacos/docker-nacos/application.properties:/home/nacos/conf/application.properties \
 -d f151dab7a111

-)重启容器

[docker@GZ***-PM153160 ~]$ docker restart f151dab7a111
f151dab7a111

三、登陆

默认账密:nacos/nacos

四、总结

大家需要的docker安装nacos相关的所有知识点基本上都在此文中了,作者亲测有效,请放心参考~

附件一:遇到的问题总结 1、docker启动报No DataSource set

docker启动nacos 报 dumpservice bean construction failure : No DataSource set

可能的原因:

-)数据库配置不正确,或没有配置(本文上面的docker run。。。命令中带了),作者使用的host网络模式省去了很多麻烦,当然读者也可以使用其他网络模式,只要保证nacos容器能连上mysql服务就行。

2、docker启动日志显示use embeded storage

docker没有使用mysql存储模式启动

如果使用了mysql存储模式,应在日志最后显示:use external storage

可能的原因:

-)数据库配置不正确,或没有配置。参考作者上面的启动命令即可

附件二:docker网络模式

Docker支持多种网络模式,主要包括以下几种‌:‌

Bridge模式‌:这是Docker的默认网络模式。每个容器都会连接到虚拟网桥上,类似于一个虚拟交换机。容器之间可以通过IP地址或容器名称进行通信,但与外部网络隔离。Bridge模式适用于大多数标准应用场景,特别是需要容器之间通信但又与外部网络隔离时。

Host模式‌:在这种模式下,容器直接使用宿主机的网络接口,没有独立的IP地址。容器与宿主机共享网络栈,但与其他容器隔离。Host模式适用于需要高性能网络连接的应用,如高频交易系统、实时数据处理等。然而,这种模式的安全性较低,因为容器与宿主机共享网络。

Container模式‌:一个容器可以共享另一个容器的网络栈。新容器通过指定--net=container:<target_container>来共享目标容器的网络资源。这种模式适用于需要紧密协作的容器,如服务发现或负载均衡场景。然而,多个容器共享网络栈可能会影响安全性。

None模式‌:在这种模式下,容器没有分配网络接口,通常用于容器间的依赖关系,如使用Docker-in-Docker场景。None模式适用于不需要网络连接的容器,或者作为其他容器的网络依赖。

Overlay网络‌:这种模式允许跨主机的容器相互通信,而无需操作系统管理路由。Overlay网络适用于Docker Swarm集群,特别适合分布式应用的场景。

IPvLAN模式‌:这种模式提供对容器的IPv4和IPv6地址进行详细控制的能力,适用于需要精细控制容器IP地址、标记和路由的场景。

Macvlan模式‌:这种模式让容器像网络上的物理设备一样运行,通过为每个容器分配自己的MAC地址来实现。适用于需要像物理设备一样运行的容器场景。

选择合适的网络模式取决于具体的应用需求和部署环境。Bridge模式适用于大多数标准应用场景,Host模式适用于高性能需求,Container模式适用于紧密协作的容器,None模式适用于不需要网络连接的容器,Overlay、IPvLAN和Macvlan模式则提供了更高级的网络配置选项‌。

到此这篇关于docker安装nacos2.2.4详解(含:nacos容器启动参数、环境变量、常见问题整理)的文章就介绍到这了,更多相关docker安装nacos2.2.4内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Docker版Percona Xtrabackup备份恢复MySQL8.0.x方式

    使用Docker版Percona Xtrabackup备份恢复MySQL8.0.x方式

    本文详细介绍了如何在Linux系统Docker环境中使用Docker版PerconaXtrabackup进行MySQL数据库的全量备份、全量压缩备份和增量备份,并提供了详细的命令操作步骤
    2026-02-02
  • 解决docker push报错denied问题

    解决docker push报错denied问题

    Docker Push权限错误需先登录私有仓库,创建项目并打指定tag,若推送到Docker Hub个人仓库,确保登录信息正确,权限匹配即可完成推送
    2025-08-08
  • Docker部署Java应用的完整流程与实战分享

    Docker部署Java应用的完整流程与实战分享

    这篇文章主要介绍了Docker部署Java应用的完整流程与实战技巧,我将从 Docker 部署 Java 应用的基础准备开始,详细阐述部署流程、优化方法以及生产实践,为你提供全面的技术方案和应用实例,需要的朋友可以参考下
    2025-06-06
  • Docker安装部署Mysql8的过程(以作数据持久化)

    Docker安装部署Mysql8的过程(以作数据持久化)

    这篇文章主要介绍了Docker安装部署Mysql8(以作数据持久化),首先创建容器并进行持久化处理,接着配置远程连接并尝试,本文结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • Docker环境下的Apache NiFi安装实践及遇到问题解决方案

    Docker环境下的Apache NiFi安装实践及遇到问题解决方案

    由于最近用到数据同步,故打算采用中间件工具来做数据同步,谁知第一步部署Apache NiFi环境就耽搁了好久,其中遇到一些问题,故记录下来部署成功记录,下面给大家详细介绍Docker环境下的Apache NiFi安装实践及遇到问题解决方案,感兴趣的朋友一起看看吧
    2025-05-05
  • 详解Docker镜像的基本操作方法

    详解Docker镜像的基本操作方法

    这篇文章主要介绍了Docker镜像的基本操作方法,主要包括获取镜像和运行镜像的相关知识,本文给大家介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • Docker拉取镜像过慢解决方法

    Docker拉取镜像过慢解决方法

    这篇文章主要给大家介绍了关于Docker拉取镜像过慢的解决方法,如果在拉取Docker镜像时遇到速度较慢的问题可以参考本文的办法,文中通过代码示例介绍的非常详细,需要的朋友可以参考下
    2023-08-08
  • 详解如何用docker安装laravel开发环境

    详解如何用docker安装laravel开发环境

    本篇文章主要介绍了详解如何用docker安装laravel开发环境,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • 云原生教程之使用Docker部署webssh工具sshwifty

    云原生教程之使用Docker部署webssh工具sshwifty

    Sshwifty是一个开源的WebSSH & WebTelnet客户端,下面这篇文章主要给大家介绍了关于云原生教程之使用Docker部署webssh工具sshwifty的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-03-03
  • Docker镜像源配置的超全指南(Windows/Mac/Linux一键搞定)

    Docker镜像源配置的超全指南(Windows/Mac/Linux一键搞定)

    做开发、搭环境的小伙伴肯定都遇到过这种崩溃时刻,Docker拉取官方镜像慢到离谱,要么超时报错,要么中途断连,Docker拉取官方镜像慢到离谱,要么超时报错,要么中途断连,覆盖Linux、Windows/Mac版Docker Desktop,需要的朋友可以参考下
    2026-03-03

最新评论