Ich versuche Elasticsearch (5.3.0) in einem Docker-Container wie folgt auszuführen:Docker + Elasticsearch: Zugriff verweigert wird, wenn die Protokolldatei zu erstellen
docker run
--network=host
--publish 9203:9200
--publish 9300:9300
--env ES_JAVA_OPTS="-Xms4g -Xmx4g"
--env "bootstrap.memory_lock=true"
--cap-add=IPC_LOCK
--ulimit memlock=-1:-1 --ulimit nofile=65536:65536
--volume /etc/elasticsearch/ip-spotlight.elasticsearch.RR6.yml:/usr/share/elasticsearch/config/elasticsearch.yml
--volume /usr/ip-spotlight/elasticsearch/RR6:/usr/share/elasticsearch/data
--volume /var/log/elasticsearch:/usr/share/elasticsearch/logs
--label app="ip-spotlight"
--label service="elasticsearch"
--label func="RR6"
--name "ip-spotlight.elasticsearch.RR6"
docker.elastic.co/elasticsearch/elasticsearch:5.3.2
SElinux deaktiviert ist (sein, um ganz sicher):
# getenforce
Disabled
Und um hier ganz sicher zu sein, sind die Berechtigungen von /var/log/elasticsearch
:
# ls -salt /var/log/elasticsearch/
total 8
4 drwxrwxrwx. 2 elasticsearch elasticsearch 4096 May 4 15:12 .
# cat /etc/*release*
CentOS Linux release 7.3.1611 (Core)
Derived from Red Hat Enterprise Linux 7.3 (Source)
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
CentOS Linux release 7.3.1611 (Core)
CentOS Linux release 7.3.1611 (Core)
cpe:/o:centos:centos:7
Und die Fehlermeldung angezeigt bekommen ist:
2017-05-04 13:10:24,621 main ERROR Unable to create file /var/log/elasticsearch/ip-spotlight.elasticsearch.RR6_access.log java.io.IOException: No such file or directory
EDIT: Hinzufügen der Protokolldatei
# touch /var/log/elasticsearch/ip-spotlight.elasticsearch.RR6_access.log
# chmod 777 /var/log/elasticsearch/ip-spotlight.elasticsearch.RR6_access.log
# docker run --network=host --publish 9203:9200 --publish 9300:9300 --env ES_JAVA_OPTS="-Xms4g -Xmx4g" --env "bootstrap.memory_lock=true" --cap-add=IPC_LOCK --ulimit memlock=-1:-1 --ulimit nofile=65536:65536 --volume /etc/elasticsearch/ip-spotlight.elasticsearch.RR6.yml:/usr/share/elasticsearch/config/elasticsearch.yml --volume /usr/ip-spotlight/elasticsearch/RR6:/usr/share/elasticsearch/data --volume /var/log/elasticsearch:/usr/share/elasticsearch/logs --label app="ip-spotlight" --label service="elasticsearch" --label func="RR6" --name "ip-spotlight.elasticsearch.RR6" docker.elastic.co/elasticsearch/elasticsearch:5.3.2
2017-05-04 13:10:24,621 main ERROR Unable to create file /var/log/elasticsearch/ip-spotlight.elasticsearch.RR6_access.log java.io.IOException: No such file or directory
manuell bearbeiten: offizielle Dokumentationen sagt The container runs Elasticsearch as user elasticsearch using uid:gid 1000:1000. Bind mounted host directories and files, such as custom_elasticsearch.yml above, need to be accessible by this user.
aber auf dem Server, nachdem auch Elasticsearch als Service, den ich installiert sehen, dass:
$ id elasticsearch
uid=990(elasticsearch) gid=988(elasticsearch) groups=988(elasticsearch)
Bitte beachten Sie, dass ich habe chmod 777
in allen dazugehörigen Dateien und Regisseur ies. Könnten Sie bitte beraten, wie dies zu lösen ist?
Danke @mano Ich habe gerade meinen ursprünglichen Post bearbeitet, könntest du bitte überprüfen und mir sagen, ob du etwas anderes meintest? – iamsterdam
@NikosSkalis dies ist ein mount-Problem, stellen Sie bitte sicher, dass Sie es richtig montiert haben – mano
Bitte beachten Sie die 2. Bearbeitung, eine Idee, wie Sie das überwinden? – iamsterdam