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

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

一、镜像下载

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支持多种网络模式,主要包括以下几种‌:‌

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

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

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

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

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

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

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

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

如果喜欢我的文章,请帮我点赞,谢谢~  


http://www.kler.cn/a/526224.html

相关文章:

  • SpringBoot整合Swagger UI 用于提供接口可视化界面
  • 20个整流电路及仿真实验汇总
  • 安卓(android)读取手机通讯录【Android移动开发基础案例教程(第2版)黑马程序员】
  • Docker/K8S
  • 从0开始使用面对对象C语言搭建一个基于OLED的图形显示框架(基础图形库实现)
  • 论文阅读(十四):贝叶斯网络在全基因组DNA甲基化研究中的应用
  • [C]基础9.深入理解指针(1)
  • 接口使用实例(1)
  • SAP SD学习笔记27 - 贩卖契约(框架协议)3 - 基本契约 - 定期请求(开票计划)
  • pandas基础学习:常用基本函数
  • hdfs:介绍三个脚本
  • jQuery小游戏(一)
  • 向上调整算法(详解)c++
  • 基于STM32的智能停车场管理系统设计
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.28 存储之道:跨平台数据持久化方案
  • 玩转大语言模型——使用langchain和Ollama本地部署大语言模型
  • 简易计算器(c++ 实现)
  • UE4.27打包安卓报错
  • 【C语言】如何写一个扫雷游戏
  • 【llm对话系统】大模型源码分析之llama kv cache缓存逻辑
  • 2.1.1 视觉与光学成像
  • 爬虫基础(五)爬虫基本原理
  • 云计算技术深度解析与实战案例
  • 6.进程的使用方式
  • 深入解析现代计算机内存访问机制:从虚拟地址到物理地址的转换与缓存优化
  • 九大服务构建高效 AIOps 平台,全面解决GenAI落地挑战