docker 啟動elasticsearch鏡像,掛載目錄后報錯的解決
從docker hub下載了一個es的鏡像,版本為6.4.2,詳細(xì)信息如下:
比較重要的就是這兩條,第一個是工作目錄,掛載目錄也需要和這里對應(yīng);第二個是啟動命令,這里是指定了一個預(yù)先寫好的啟動腳本。所以我啟動了一個空容器去查看了下容器內(nèi)的情況:
容器內(nèi)部目錄結(jié)構(gòu)如上圖,data是用來存放數(shù)據(jù),logs用來存放日志。
接著查看下啟動腳本
/usr/local/bin/docker-entrypoint.sh
前半部分我也是看的一知半解,不過真正和掛載目錄相關(guān)的是最后這部分,這里處理了掛載目錄后的操作,大致意思是:
如果是root用戶(docker啟動容器,默認(rèn)是以root用戶身份),并且 TAKE_FILE_OWNERSHIP 變量存在,則將/usr/share/elasticsearch/{data,logs},這兩個目錄都改變?yōu)?000用戶所屬(這里也可以看到最終存儲數(shù)據(jù)的路徑為data,所以掛載時應(yīng)該掛載到data下)。
id為1000的用戶:
正是elasticsearch用戶,所以如果不掛載任何目錄直接啟動容器即可,如果掛載,那么就添加一個變量,任意賦值,es可以正常啟動。
docker run -itd -v /root/es-data/:/usr/share/elasticsearch/data -e TAKE_FILE_OWNERSHIP=111 -p 9200:9200 --name es elasticsearch:6.4.2
補(bǔ)充知識:記一次docker安裝elasticsearch及遇到的坑
先給一行命令
docker run -d -p 9200:9200 -p 9300:9300 -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" --name=<your es name> elasticsearch:<es version>
使用該命令可直接安裝并運(yùn)行es的docker 鏡像容器
問題
使用命令docker run -d -p 9200:9200 -p 9300:9300 --name=<your es name> elasticsearch:<es version>啟動, 然后想看是否啟動起來了,于是使用docker ps命令發(fā)現(xiàn):
es并未啟動起來。
于是又用docker ps -a命令:
發(fā)現(xiàn)啟動終止了。
然后用docker logs -f <container id>命令查看es的啟動日志:
拉到最下面:
長這樣:
power management: Memory: 4k page, physical 1882892k(89076k free), swap 0k(0k free) vm_info: OpenJDK 64-Bit Server VM (25.181-b13) for linux-amd64 JRE (1.8.0_181-8u181-b13-2~deb9u1-b13), built on Oct 22 2018 18:05:23 by "pbuilder" with gcc 6.3.0 20170516 time: Fri Nov 23 07:00:34 2018 elapsed time: 0 seconds (0d 0h 0m 0s)
于是復(fù)制報錯信息Google一波,發(fā)現(xiàn)問題所在。elasticsearch5.+配置默認(rèn)的內(nèi)存是2g。我給docker的內(nèi)存也只有2g,于是就GG了。
刪除了舊容器,和舊鏡像后,在docker啟動命令中加上-e "ES_JAVA_OPTS=-Xms512m -Xmx512m"解決問題
docker ps :
最后訪問一波9200端口:
OJBK
以上這篇docker 啟動elasticsearch鏡像,掛載目錄后報錯的解決就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持本站。
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。