欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > docker安装nacos2.2.4详解(含:nacos容器启动参数、环境变量、常见问题整理)

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

2025/2/5 7:55:27 来源:https://blog.csdn.net/jjk_02027/article/details/145400880  浏览:    关键词: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模式则提供了更高级的网络配置选项‌。

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com