Docker安裝Nacos單機(jī)的實(shí)現(xiàn)方式(配合寶塔)
一、事前準(zhǔn)備
CentOs系統(tǒng),安裝了寶塔面板,安裝了docker
,云平臺(tái)防火墻里開(kāi)放8848
端口,官網(wǎng)地址
寶塔-安全放行8848端口
記得使用firewall-cmd --list-port
查看一下linux有沒(méi)有開(kāi)放nacos的8848端口,未開(kāi)啟的需要在寶塔里開(kāi)啟或通過(guò)命令行開(kāi)啟。
當(dāng)前我的是開(kāi)放了8848端口,如果小伙伴沒(méi)有開(kāi)放呢,可以使用開(kāi)啟,–permanent表示永久有效,如果不加當(dāng)前命令,表示重啟后就不生效了。寶塔開(kāi)啟也是可以的。
firewall-cmd --zone=public --add-port=8848/tcp --permanent
開(kāi)放后記得重啟防火墻
firewall-cmd --reload
二、安裝
1、鏡像倉(cāng)庫(kù)中拉取最新版本
https://hub.docker.com/r/nacos/nacos-server
docker pull nacos/nacos-server
2、創(chuàng)建日志文件夾
mkdir -p /home/nacos/logs/
3、創(chuàng)建配置文件夾
mkdir -p /home/nacos/init.d/
4、nacos數(shù)據(jù)庫(kù)導(dǎo)入
宿主機(jī)的mysql
新建nacos
的數(shù)據(jù)庫(kù),并執(zhí)行腳本 sql腳本地址如下:
https://github.com/alibaba/nacos/blob/master/config/src/main/resources/META-INF/nacos-db.sql
5、運(yùn)行nacos
docker run \ --name nacos -d \ -p 8848:8848 \ -p 9848:9848 \ -p 9849:9849 \ --privileged=true \ --restart=always \ -e JVM_XMS=256m \ -e JVM_XMX=256m \ -e MODE=standalone \ -e PREFER_HOST_MODE=hostname \ -e SPRING_DATASOURCE_PLATFORM=mysql \ -e MYSQL_SERVICE_HOST=172.17.0.1 \ -e MYSQL_SERVICE_PORT=3306 \ -e MYSQL_SERVICE_DB_NAME=nacos \ -e MYSQL_SERVICE_USER=nacos \ -e MYSQL_SERVICE_PASSWORD=JTbMMN8k4rHh3N8z \ -v /root/apply/docker/apply/nacos/logs:/home/nacos/logs \ -v /root/apply/docker/apply/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties \ -v /root/apply/docker/apply/nacos/data:/home/nacos/data \ nacos/nacos-server
解讀
docker 啟動(dòng)容器 docker run \ 容器名稱叫nacos -d后臺(tái)運(yùn)行 --name nacos -d \ nacos默認(rèn)端口8848 映射到外部端口8848 -p 8848:8848 \ naocs 應(yīng)該是2.0版本以后就需要一下的兩個(gè)端口 所以也需要開(kāi)放 -p 9848:9848 -p 9849:9849 --privileged=true \ docker重啟時(shí) nacos也一并重啟 --restart=always \ -e 配置 啟動(dòng)參數(shù) 配置 jvm -e JVM_XMS=256m -e JVM_XMX=256m \ 單機(jī)模式 -e MODE=standalone -e PREFER_HOST_MODE=hostname \ 數(shù)據(jù)庫(kù)是mysql 配置持久化 不使用nacos自帶的數(shù)據(jù)庫(kù) -e SPRING_DATASOURCE_PLATFORM=mysql \ 寫自己的數(shù)據(jù)庫(kù)地址 -e MYSQL_SERVICE_HOST=###### \ 數(shù)據(jù)庫(kù)端口號(hào) -e MYSQL_SERVICE_PORT=3306 \ mysql的數(shù)據(jù)庫(kù)名稱 -e MYSQL_SERVICE_DB_NAME=nacos \ mysql的賬號(hào)密碼 -e MYSQL_SERVICE_USER=root -e MYSQL_SERVICE_PASSWORD=root \ -v 映射docker內(nèi)部的文件到docker外部 我這里將nacos的日志 數(shù)據(jù) 以及配置文件 映射出來(lái) 映射日志 -v /root/apply/docker/apply/nacos/logs:/home/nacos/logs \ 映射配置文件 (應(yīng)該沒(méi)用了 因?yàn)榍懊嬉呀?jīng)配置參數(shù)了) -v /root/apply/docker/apply/nacos/init.d/custom.properties:/etc/nacos/init.d/custom.properties \ 映射nacos的本地?cái)?shù)據(jù) 也沒(méi)啥用因?yàn)槭褂昧薽ysql -v /root/apply/docker/apply/nacos/data:/home/nacos/data \ 啟動(dòng)鏡像名稱 nacos/nacos-server
三、常見(jiàn)問(wèn)題
1、數(shù)據(jù)庫(kù)配置
如果數(shù)據(jù)庫(kù)是rds這種公網(wǎng)可以訪問(wèn)的數(shù)據(jù)庫(kù),直接寫就可以
如果數(shù)據(jù)庫(kù)在宿主機(jī)
docker里面的代碼生成的數(shù)據(jù)需要寫入到宿主機(jī)的Mysql
服務(wù)器上,想要用本地的數(shù)據(jù)庫(kù)測(cè)試自己的代碼正確性,項(xiàng)目程序安裝在docker容器中,于是必定要在docker容器里訪問(wèn)到本地的數(shù)據(jù)庫(kù)。
(1)在docker容器里localhost并不是指宿主機(jī)的localhost,因此不能在容器中通過(guò)localhost:3306訪問(wèn)到宿主機(jī)的mysql,也不可以通過(guò)127.0.0.1訪問(wèn)。
(2)docker在運(yùn)行時(shí)就建立了虛擬網(wǎng)卡,并命名為docker0,可以在宿主機(jī)上運(yùn)行ifconfig看到它,這就是宿主機(jī)建立的網(wǎng)橋,用于與各個(gè)容器之間通信。
[root@VM-8-15-centos ~]# ifconfig docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255 inet6 fe80::42:53ff:fed0:4c11 prefixlen 64 scopeid 0x20<link> ether 02:42:53:d0:4c:11 txqueuelen 0 (Ethernet) RX packets 4489 bytes 6944799 (6.6 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 3379 bytes 999348 (975.9 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
(3)宿主機(jī)在與容器同一局域網(wǎng)的IP地址一般是docker0對(duì)應(yīng)的IP地址段的首個(gè)地址(如172.17.0.1),因此,可以在容器里通過(guò)172.17.0.1:3306訪問(wèn)到宿主機(jī)的mysql服務(wù)器。
mysql服務(wù)器默認(rèn)的設(shè)置為允許127.0.0.1段的ip地址訪問(wèn)
如果用172.17.0.1:3306仍然無(wú)法訪問(wèn)到宿主機(jī)的話,需要設(shè)置一下mysql的訪問(wèn)權(quán)限:
如果用的是寶塔面板,可以給nacos這個(gè)數(shù)據(jù)庫(kù)設(shè)置權(quán)限為所有人
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '12345678' WITH GRANT OPTION; mysql>flush privileges; // 其中各字符的含義: // *.* 對(duì)任意數(shù)據(jù)庫(kù)任意表有效 // "root" "12345678" 是數(shù)據(jù)庫(kù)用戶名和密碼 // '%' 允許訪問(wèn)數(shù)據(jù)庫(kù)的IP地址,%意思是任意IP,也可以指定IP // flush privileges 刷新權(quán)限信息
2、如何查看是否安裝成功
1)安裝后訪問(wèn)地址,有登錄頁(yè)面就是安裝成功了,默認(rèn)用戶名和密碼都是nacos
? http://XXX.XXX.XXX.XXX:8848/nacos
2)寶塔面板點(diǎn)擊左側(cè)docker點(diǎn)擊右側(cè)nacos的日志來(lái)看是否正確運(yùn)行,如果正確運(yùn)行后是有如下字樣的
2022-12-15 09:46:53,339 INFO Nacos started successfully in stand alone mode. use external storage 2022-12-15 09:47:15,057 INFO Initializing Servlet 'dispatcherServlet' 2022-12-15 09:47:15,090 INFO Completed initialization in 32 ms
3)日志提示成功,無(wú)法訪問(wèn)
首先需要排查的就是端口,騰訊云阿里云的端口是否打開(kāi)?寶塔面板或防火墻的端口是否打開(kāi)?
其次需要排查的就是數(shù)據(jù)庫(kù)是否正確。
3)日志提示成功,無(wú)法訪問(wèn)
首先需要排查的就是端口,騰訊云阿里云的端口是否打開(kāi)?寶塔面板或防火墻的端口是否打開(kāi)?
其次需要排查的就是數(shù)據(jù)庫(kù)是否正確。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于docker部署服務(wù)時(shí)ip無(wú)法訪問(wèn)服務(wù)正常的問(wèn)題
小編在使用docker部署應(yīng)用的時(shí)候,無(wú)法使用IP地址訪問(wèn),防火墻已經(jīng)關(guān)閉,可以ping通,應(yīng)用已經(jīng)配置0.0.0.0,怎么回事?下面小編給大家介紹下docker部署服務(wù),ip無(wú)法訪問(wèn),服務(wù)正常的解決方法,感興趣的朋友一起看看吧2022-09-09yum下載docker安裝包安裝到離線機(jī)器的實(shí)例代碼詳解
本文通過(guò)實(shí)例代碼給大家介紹了yum下載docker安裝包,安裝到離線機(jī)器,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-12-12六種Docker目錄掛載類型及注意事項(xiàng)總結(jié)
這篇文章主要介紹了六種Docker目錄掛載方式,包括數(shù)據(jù)卷掛載、綁定掛載、臨時(shí)文件系統(tǒng)掛載、命名卷掛載、匿名卷掛載和卷驅(qū)動(dòng)掛載,并詳細(xì)說(shuō)明了每種掛載方式的定義、舉例和注意事項(xiàng),需要的朋友可以參考下2025-03-03使用Docker部署war包項(xiàng)目的實(shí)現(xiàn)
這篇文章主要介紹了使用Docker部署war包項(xiàng)目的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10