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.niftyadmin.cn/n/5838646.html

相关文章

如何有效利用数据采集HTTP代理

数据采集HTTP代理是一种有效的工具&#xff0c;能够帮助用户在进行数据采集时提升效率。它通过将请求发送到目标服务器的方式&#xff0c;能够有效地隐藏用户的真实IP地址&#xff0c;从而实现更加安全和高效的数据获取。随着信息时代的发展&#xff0c;数据采集HTTP代理的应用…

自定义数据集使用scikit-learn中的包实现线性回归方法对其进行拟合

一、导入必要的库 import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error, r2_score 二、加载自定义数据集 # 创建自定义数据集 # 假设我们有一个…

Java基础知识总结(三十二)--API--- java.lang.Runtime

类中没有构造方法&#xff0c;不能创建对象。 但是有非静态方法。说明该类中应该定义好了对象&#xff0c;并可以通过一个static方法获取这个对象。用这个对象来调用非静态方法。这个方法就是 static Runtime getRuntime(); 这个Runtime其实使用单例设计模式进行设计。 class …

基于Springboot的社区药房管理系统

博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业多年&#xff0c;熟悉各种主流语言&#xff0c;精通java、python、php、爬虫、web开发&#xff0c;已经做了多年的设计程序开发&#xff0c;开发过上千套设计程序&#xff0c;没有什么华丽的语言&#xff0c;只有实…

Python NumPy(8):NumPy 位运算、NumPy 字符串函数

1 NumPy 位运算 位运算是一种在二进制数字的位级别上进行操作的一类运算&#xff0c;它们直接操作二进制数字的各个位&#xff0c;而不考虑数字的整体值。NumPy 提供了一系列位运算函数&#xff0c;允许对数组中的元素进行逐位操作&#xff0c;这些操作与 Python 的位运算符类似…

网络安全技术简介

网络安全技术简介 随着信息技术的迅猛发展&#xff0c;互联网已经成为人们日常生活和工作中不可或缺的一部分。与此同时&#xff0c;网络安全问题也日益凸显&#xff0c;成为全球关注的焦点。无论是个人隐私泄露、企业数据被盗取还是国家信息安全受到威胁&#xff0c;都与网络…

[Python学习日记-80] 用 socket 实现文件传输功能(上传下载)

[Python学习日记-80] 用 socket 实现文件传输功能&#xff08;上传下载&#xff09; 简介 简单版本 函数版本 面向对象版本 简介 到此为止网络编程基础的介绍已经接近尾声了&#xff0c;而在本篇当中我们会基于上一篇博客代码的基础上来实现文件传输功能。文件传输其实与远…

单片机串口打印printf函数显示内容(固件库开发)

1.hal_usart.c 文件 #include <stdio.h> #include "hal_usart.h" #include "stm32F10x.h"//**要根据 使用的是哪个串口 对应修改 串口号 eg&#xff1a;USART1** void USART_PUTC(char ch) {/* 等待数据寄存器为空 */while((USART1->SR & …