一、镜像下载
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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论