docker安裝elasticsearch報(bào)錯(cuò)AccessDeniedException:/tmp/elasticsearch的解決
docker安裝elasticsearch報(bào)錯(cuò)
按照elasticsearch的官方文檔用docker安裝7.7.1版本的es,報(bào)錯(cuò)
(順帶說(shuō)以下,如果我把鏡像的版本換成最新的7.12.1,不會(huì)報(bào)錯(cuò)。用7.7.1的就會(huì)報(bào)錯(cuò))
[root@webapi4-app-22-151 workspace]# docker run -p 9200:9200 -p 9300:9300 -e “discovery.type=single-node” docker.elastic.co/elasticsearch/elasticsearch:7.7.1
Exception in thread “main” java.nio.file.AccessDeniedException: /tmp/elasticsearch-8523317643108022907
at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:90)
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116)
at java.base/sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:389)
at java.base/java.nio.file.Files.createDirectory(Files.java:694)
at java.base/java.nio.file.TempFileHelper.create(TempFileHelper.java:135)
at java.base/java.nio.file.TempFileHelper.createTempDirectory(TempFileHelper.java:172)
at java.base/java.nio.file.Files.createTempDirectory(Files.java:1011)
at org.elasticsearch.tools.launchers.Launchers.createTempDirectory(Launchers.java:66)
at org.elasticsearch.tools.launchers.TempDirectory.main(TempDirectory.java:54)
大概搜了下這個(gè)問(wèn)題,別人的報(bào)錯(cuò)都是/usr/share/elasticsearch目錄,而我的是/tmp目錄,不太一樣.
我用別人的解決方法
- 設(shè)置環(huán)境變量TAKE_FILE_OWNERSHIP=true
- 容器內(nèi)chown -R 1000:0 /usr/share/elasticsearch/{data,logs}
- 把宿主機(jī)的掛載目錄權(quán)限設(shè)置成777
這三種辦法不管用,還是報(bào)錯(cuò),所以,使出絕招,進(jìn)入容器里面排錯(cuò).
啟動(dòng)一個(gè)臨時(shí)容器,默認(rèn)執(zhí)行命令/bin/bash
默認(rèn)執(zhí)行命令變成了/bin/bash,而不是docker-entrypoint.sh,容器主進(jìn)程是/bin/bash所以容器不會(huì)遇到錯(cuò)誤導(dǎo)致退出
[root@webapi4-app-22-151 workspace]# docker run -itd -e “discovery.type=single-node” docker.elastic.co/elasticsearch/elasticsearch:7.7.1 /bin/bash
5f733625a5808d15c8895cb12ddf94845f5f1b57960edd1d224544cf8da08bab
[root@webapi4-app-22-151 workspace]# docker exec -it 5f7 bash
[root@5f733625a580 elasticsearch]#
#執(zhí)行es容器的啟動(dòng)腳本,報(bào)錯(cuò)
[root@5f733625a580 elasticsearch]# sh /usr/local/bin/docker-entrypoint.sh
就是出現(xiàn)的這個(gè)錯(cuò)誤,/tmp目錄

然后在容器里給/tmp目錄授權(quán)777,重新執(zhí)行腳本
[root@5f733625a580 elasticsearch]# chmod 777 /tmp [root@5f733625a580 elasticsearch]# sh /usr/local/bin/docker-entrypoint.sh
報(bào)了新的錯(cuò)誤
Error opening log file ‘logs/gc.log’: Permission denied

給容器內(nèi)的/usr/share/elasticsearch目錄設(shè)置權(quán)限
[root@5f733625a580 elasticsearch]# chown -R 1000:0 /usr/share/elasticsearch/ [root@5f733625a580 elasticsearch]# sh /usr/local/bin/docker-entrypoint.sh
最后elasticsearch服務(wù)啟動(dòng)成功
總結(jié): 先配置
chmod 777 /tmp chown -R 1000:0 /usr/share/elasticsearch/
這兩條命令再執(zhí)行腳本docker-entrypoint.sh
解決問(wèn)題后
使用docker-compose安裝,docker-compose.yml:
version: '2'
services:
es:
image: docker.elastic.co/elasticsearch/elasticsearch:7.7.1
container_name: es
ports:
- 9200:9200
environment:
- discovery.type=single-node
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- /data/elk/es/data:/usr/share/elasticsearch/data
command:
- /bin/bash
- -c
- |
chmod 777 /tmp
chown -R 1000:0 /usr/share/elasticsearch/
sh /usr/local/bin/docker-entrypoint.sh
啟動(dòng)成功
[root@webapi4-app-22-151 workspace]# docker-compose up -d
Creating es … done
[root@webapi4-app-22-151 workspace]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
062266bf95cd docker.elastic.co/elasticsearch/elasticsearch:7.7.1 “/tini – /usr/local…” 2 seconds ago Up 2 seconds 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 9300/tcp es
[root@webapi4-app-22-151 workspace]# curl localhost:9200
{
“name” : “062266bf95cd”,
“cluster_name” : “docker-cluster”,
“cluster_uuid” : “ndgcRUCJTb6pNWUeJRCMLw”,
“version” : {
“number” : “7.7.1”,
“build_flavor” : “default”,
“build_type” : “docker”,
“build_hash” : “ad56dce891c901a492bb1ee393f12dfff473a423”,
“build_date” : “2020-05-28T16:30:01.040088Z”,
“build_snapshot” : false,
“l(fā)ucene_version” : “8.5.1”,
“minimum_wire_compatibility_version” : “6.8.0”,
“minimum_index_compatibility_version” : “6.0.0-beta1”
},
“tagline” : “You Know, for Search”
}目前暫時(shí)解決了這個(gè)問(wèn)題,但是應(yīng)該有更優(yōu)的解決方法
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
兩小時(shí)入門(mén)Docker教程實(shí)踐
這篇文章主要介紹了兩小時(shí)入門(mén)Docker教程實(shí)踐,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-03-03
Docker自定義鏡像的實(shí)現(xiàn)步驟(SpringBoot程序?yàn)槔?
Docker自定義鏡像指的是用戶根據(jù)自己的需求和規(guī)范,使用Dockerfile或其他方式創(chuàng)建的一個(gè)Docker鏡像,本文給大家介紹了Docker自定義鏡像的實(shí)現(xiàn)步驟,文中通過(guò)圖文講解的非常詳細(xì),需要的朋友可以參考下2024-06-06
淺談Docker基礎(chǔ)之?dāng)?shù)據(jù)管理
這篇文章主要介紹了淺談Docker基礎(chǔ)之?dāng)?shù)據(jù)管理,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03

