Installer Elasticsearch avec Docker

Les images Docker pour Elasticsearch sont disponibles dans le registre Elastic Docker. Une liste de toutes les images et balises Docker publiées est disponible sur www.docker.elastic.co . Le code source est dans GitHub .

Exécuter Elasticsearch dans Docker

Utilisez les commandes Docker pour démarrer un cluster Elasticsearch à nœud unique à des fins de développement ou de test. Vous pouvez ensuite exécuter des commandes Docker supplémentaires pour ajouter des nœuds au cluster de test ou exécuter Kibana.

Démarrer un cluster à nœud unique

  1. Installez Docker. Visitez Get Docker pour installer Docker pour votre environnement.Si vous utilisez Docker Desktop, assurez-vous d’allouer au moins 4 Go de mémoire. Vous pouvez ajuster l’utilisation de la mémoire dans Docker Desktop en accédant à Paramètres > Ressources .
  2. Créez un nouveau réseau Docker.
    docker network create elastic
  3. Extrayez l’image Docker d’Elasticsearch.
    docker pull docker.elastic.co/elasticsearch/elasticsearch:8.13.4
  4. Facultatif : installez Cosign pour votre environnement. Utilisez ensuite Cosign pour vérifier la signature de l’image Elasticsearch.
    wget https://artifacts.elastic.co/cosign.pub
    cosign verify --key cosign.pub docker.elastic.co/elasticsearch/elasticsearch:8.13.4

    La cosigncommande imprime les résultats de la vérification et la charge utile de la signature au format JSON :

    Verification for docker.elastic.co/elasticsearch/elasticsearch:8.13.4 --
    The following checks were performed on each of these signatures:
    - The cosign claims were validated
    - Existence of the claims in the transparency log was verified offline
    - The signatures were verified against the specified public key
    
    
  5. Démarrez un conteneur Elasticsearch.
    docker run --name es01 --net elastic -p 9200:9200 -it -m 1GB docker.elastic.co/elasticsearch/elasticsearch:8.13.4

    Utilisez l’ -mindicateur pour définir une limite de mémoire pour le conteneur. Cela supprime le besoin de définir manuellement la taille de la JVM .

    La commande imprime le elasticmot de passe utilisateur et un jeton d’inscription pour Kibana.

  6. Copiez le elasticmot de passe généré et le jeton d’inscription. Ces informations d’identification ne sont affichées que lorsque vous démarrez Elasticsearch pour la première fois. Vous pouvez régénérer les informations d’identification à l’aide des commandes suivantes.
    docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
    docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana

    Nous vous recommandons de stocker le elasticmot de passe en tant que variable d’environnement dans votre shell. Exemple:

    export ELASTIC_PASSWORD="your_password"
  7. Copiez le http_ca.crtcertificat SSL du conteneur sur votre ordinateur local.
    docker cp es01:/usr/share/elasticsearch/config/certs/http_ca.crt .
  8. Effectuez un appel d’API REST à Elasticsearch pour vous assurer que le conteneur Elasticsearch est en cours d’exécution.
    curl --cacert http_ca.crt -u elastic:$ELASTIC_PASSWORD https://localhost:9200

Ajouter plus de nœud

  1. Utilisez un nœud existant pour générer un jeton d’inscription pour le nouveau nœud.
    docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node

    Le jeton d’inscription est valable 30 minutes.

  2. Démarrez un nouveau conteneur Elasticsearch. Incluez le jeton d’inscription en tant que variable d’environnement.
    docker run -e ENROLLMENT_TOKEN="<token>" --name es02 --net elastic -it -m 1GB docker.elastic.co/elasticsearch/elasticsearch:8.13.4
  3. Appelez l’ API des nœuds cat pour vérifier que le nœud a été ajouté au cluster.
    curl --cacert http_ca.crt -u elastic:$ELASTIC_PASSWORD https://localhost:9200/_cat/nodes

Exécuter Kibana

  1. Extrayez l’image Kibana Docker.
    docker pull docker.elastic.co/kibana/kibana:8.13.4
  2. Facultatif : vérifiez la signature de l’image Kibana.
    wget https://artifacts.elastic.co/cosign.pub
    cosign verify --key cosign.pub docker.elastic.co/kibana/kibana:8.13.4
  3. Démarrez un conteneur Kibana.
    docker run --name kib01 --net elastic -p 5601:5601 docker.elastic.co/kibana/kibana:8.13.4
  4. Lorsque Kibana démarre, il génère un lien généré unique vers le terminal. Pour accéder à Kibana, ouvrez ce lien dans un navigateur Web.
  5. Dans votre navigateur, saisissez le jeton d’inscription généré lorsque vous avez démarré Elasticsearch.Pour régénérer le jeton, exécutez :
    docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
  6. Connectez-vous à Kibana en tant elasticqu’utilisateur avec le mot de passe généré lorsque vous avez démarré Elasticsearch.Pour régénérer le mot de passe, exécutez :
    docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic

Supprimer les conteneurs

Pour supprimer les conteneurs et leur réseau, exécutez :

# Remove the Elastic network
docker network rm elastic

# Remove Elasticsearch containers
docker rm es01
docker rm es02

# Remove the Kibana container
docker rm kib01

Prochaines étapes

Vous disposez désormais d’un environnement de test Elasticsearch configuré. Avant de vous lancer dans un développement sérieux ou de passer en production avec Elasticsearch, passez en revue les exigences et les recommandations à appliquer lors de l’exécution d’Elasticsearch dans Docker en production.

Démarrez un cluster multi-nœuds avec Docker Compose

Utilisez Docker Compose pour démarrer un cluster Elasticsearch à trois nœuds avec Kibana. Docker Compose vous permet de démarrer plusieurs conteneurs avec une seule commande.

Configurer et démarrer le cluster

  1. Installez Docker Composer. Consultez la documentation Docker Compose pour installer Docker Compose pour votre environnement.Si vous utilisez Docker Desktop, Docker Compose est installé automatiquement. Assurez-vous d’allouer au moins 4 Go de mémoire à Docker Desktop. Vous pouvez ajuster l’utilisation de la mémoire dans Docker Desktop en accédant à Paramètres > Ressources .
  2. Créez ou accédez à un répertoire vide pour le projet.
  3. Téléchargez et enregistrez les fichiers suivants dans le répertoire du projet :
  4. Dans le .envfichier, spécifiez un mot de passe pour les variables ELASTIC_PASSWORDet KIBANA_PASSWORD.Les mots de passe doivent être alphanumériques et ne peuvent pas contenir de caractères spéciaux, tels que !ou @. Le script bash inclus dans le docker-compose.ymlfichier ne fonctionne qu’avec des caractères alphanumériques. Exemple:

    # Password for the ‘elastic’ user (at least 6 characters)
    ELASTIC_PASSWORD=changeme

    # Password for the ‘kibana_system’ user (at least 6 characters)
    KIBANA_PASSWORD=changeme

  5. Dans le .envfichier, définissez STACK_VERSIONla version actuelle d’Elastic Stack.
    ...
    # Version of Elastic products
    STACK_VERSION=8.13.4
    ...
    
  6. Par défaut, la configuration Docker Compose expose le port 9200sur toutes les interfaces réseau.Pour éviter d’exposer le port 9200à des hôtes externes, définissez- ES_PORTle sur 127.0.0.1:9200 dans le .envfichier. Cela garantit qu’Elasticsearch n’est accessible qu’à partir de la machine hôte.
    ...
    # Port to expose Elasticsearch HTTP API to the host
    #ES_PORT=9200
    ES_PORT=127.0.0.1:9200
    ...
    
    
    
  7. Pour démarrer le cluster, exécutez la commande suivante à partir du répertoire du projet.
    docker-compose up -d
  8. Une fois le cluster démarré, ouvrez http://localhost:5601 dans un navigateur Web pour accéder à Kibana.
  9. Connectez-vous à Kibana en tant elasticqu’utilisateur en utilisant celui ELASTIC_PASSWORDque vous avez défini précédemment.

Arrêtez et supprimez le cluster

Pour arrêter le cluster, exécutez docker-compose down. Les données des volumes Docker sont conservées et chargées lorsque vous redémarrez le cluster avec docker-compose up.

docker-compose down

Pour supprimer le réseau, les conteneurs et les volumes lorsque vous arrêtez le cluster, spécifiez l’ -voption :

docker-compose down -v

Prochaines étapes

Vous disposez désormais d’un environnement de test Elasticsearch configuré. Avant de vous lancer dans un développement sérieux ou de passer en production avec Elasticsearch, passez en revue les exigences et les recommandations à appliquer lors de l’exécution d’Elasticsearch dans Docker en production.

Utiliser les images Docker en production

Les exigences et recommandations suivantes s’appliquent lors de l’exécution d’Elasticsearch dans Docker en production.

Réglé vm.max_map_countsur au moins26214

Le vm.max_map_countparamètre du noyau doit être défini au moins 262144pour une utilisation en production.

La manière dont vous définissez vm.max_map_countdépend de votre plate-forme.

Linux

Pour afficher la valeur actuelle du vm.max_map_countparamètre, exécutez :

grep vm.max_map_count /etc/sysctl.conf
vm.max_map_count=262144

Pour appliquer le paramètre sur un système actif, exécutez :

sysctl -w vm.max_map_count=262144

Pour modifier définitivement la valeur du vm.max_map_countparamètre, mettez à jour la valeur dans /etc/sysctl.conf.

macOS avec Docker pour Mac

Le vm.max_map_countparamètre doit être défini dans la machine virtuelle xhyve :

  1. Depuis la ligne de commande, exécutez :
    screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
  2. Appuyez sur Entrée et utilisez sysctlpour configurer vm.max_map_count:
    sysctl -w vm.max_map_count=262144
  3. Pour quitter la screensession, tapez Ctrl a d.
Windows et macOS avec Docker Desktop

Le vm.max_map_countparamètre doit être défini via docker-machine :

docker-machine ssh
sudo sysctl -w vm.max_map_count=262144
Windows avec back-end Docker Desktop WSL 2

Le vm.max_map_countparamètre doit être défini dans l’instance WSL « docker-desktop » avant que le conteneur Elasticsearch ne démarre correctement. Il existe plusieurs façons de procéder, selon votre version de Windows et votre version de WSL.

Si vous utilisez Windows 10 avant la version 22H2, ou si vous utilisez Windows 10 version 22H2 en utilisant la version intégrée de WSL, vous devez soit le définir manuellement à chaque redémarrage de Docker avant de démarrer votre conteneur Elasticsearch, soit (si vous le faites vous ne souhaitez pas le faire à chaque redémarrage), vous devez définir globalement chaque instance WSL2 pour que la vm.max_map_countmodification soit effectuée. En effet, ces versions de WSL ne traitent pas correctement le fichier /etc/sysctl.conf.

Pour le définir manuellement à chaque redémarrage, vous devez exécuter les commandes suivantes dans une invite de commande ou une fenêtre PowerShell à chaque fois que vous redémarrez Docker :

wsl -d docker-desktop -u root
sysctl -w vm.max_map_count=262144

Si vous utilisez ces versions de WSL et que vous ne souhaitez pas avoir à exécuter ces commandes à chaque redémarrage de Docker, vous pouvez modifier globalement chaque distribution WSL avec ce paramètre en modifiant votre %USERPROFILE%\.wslconfig comme suit :

[wsl2]
kernelCommandLine = "sysctl.vm.max_map_count=262144"

Cela entraînera l’attribution de ce paramètre à toutes les machines virtuelles WSL2 lors de leur démarrage.

Si vous utilisez Windows 11 ou Windows 10 version 22H2 et que vous avez installé la version Microsoft Store de WSL, vous pouvez modifier le fichier /etc/sysctl.conf dans la distribution WSL « docker-desktop », peut-être avec des commandes comme celle-ci :

wsl -d docker-desktop -u root
vi /etc/sysctl.conf

et en ajoutant une ligne qui se lit comme suit :

vm.max_map_count = 262144

Les fichiers de configuration doivent être lisibles par l’ elasticsearchutilisateur

Par défaut, Elasticsearch s’exécute dans le conteneur en tant qu’utilisateur elasticsearchutilisant uid:gid 1000:0.

Une exception est Openshift , qui exécute des conteneurs en utilisant un ID utilisateur attribué arbitrairement. Openshift présente des volumes persistants avec le gid défini sur 0, qui fonctionne sans aucun ajustement.

Si vous montez en liaison un répertoire ou un fichier local, il doit être lisible par l’ elasticsearchutilisateur. De plus, cet utilisateur doit avoir un accès en écriture aux répertoires de configuration, de données et de journal (Elasticsearch a besoin d’un accès en écriture au configrépertoire pour pouvoir générer un magasin de clés). Une bonne stratégie consiste à accorder un accès de groupe au gid 0pour le répertoire local.

Par exemple, pour préparer un répertoire local pour stocker des données via un montage lié :

mkdir esdatadir
chmod g+rwx esdatadir
chgrp 0 esdatadir

Vous pouvez également exécuter un conteneur Elasticsearch en utilisant à la fois un UID et un GID personnalisés. Vous devez vous assurer que les autorisations de fichiers n’empêcheront pas l’exécution d’Elasticsearch. Vous pouvez utiliser l’une des deux options suivantes :

  • Lier-monter les répertoires configdataet logs . Si vous avez l’intention d’installer des plugins et préférez ne pas créer d’image Docker personnalisée , vous devez également monter le pluginsrépertoire en liaison.
  • Passez l’ --group-add 0option de ligne de commande à docker run. Cela garantit que l’utilisateur sous lequel Elasticsearch est exécuté est également membre du rootgroupe (GID 0) à l’intérieur du conteneur.

Augmenter les ulimits pour nofile et nproc

Des ulimits augmentés pour nofile et nproc doivent être disponibles pour les conteneurs Elasticsearch. Vérifiez que le système d’initialisation du démon Docker les définit sur des valeurs acceptables.

Pour vérifier les valeurs par défaut du démon Docker pour ulimits, exécutez :

docker run --rm docker.elastic.co/elasticsearch/elasticsearch:8.13.4 /bin/bash -c 'ulimit -Hn && ulimit -Sn && ulimit -Hu && ulimit -Su'

Si nécessaire, ajustez-les dans le démon ou remplacez-les par conteneur. Par exemple, lorsque vous utilisez docker run, définissez :

--ulimit nofile=65535:65535

Désactiver l’échange

L’échange doit être désactivé pour des raisons de performances et de stabilité des nœuds. Pour plus d’informations sur les façons de procéder, voir Désactiver l’échange .

Si vous optez pour cette bootstrap.memory_lock: trueapproche, vous devez également définir le memlock: trueulimit dans le Docker Daemon , ou le définir explicitement pour le conteneur, comme indiqué dans l’ exemple de fichier de composition . Lorsque vous utilisez docker run, vous pouvez spécifier :

-e "bootstrap.memory_lock=true" --ulimit memlock=-1:-1

Randomiser les ports publiés

L’image expose les ports TCP 9200 et 9300. Pour les clusters de production, --publish-allil est recommandé de randomiser les ports publiés, sauf si vous épinglez un conteneur par hôte.

Définir manuellement la taille du tas

Par défaut, Elasticsearch dimensionne automatiquement le tas JVM en fonction des rôles des nœuds et de la mémoire totale disponible pour le conteneur du nœud. Nous recommandons ce dimensionnement par défaut pour la plupart des environnements de production. Si nécessaire, vous pouvez remplacer le dimensionnement par défaut en définissant manuellement la taille du segment JVM.

Pour définir manuellement la taille du tas en production, montez sous une liaison un fichier d’options JVM qui inclut les paramètres de taille de tas/usr/share/elasticsearch/config/jvm.options.d souhaités .

Pour les tests, vous pouvez également définir manuellement la taille du tas à l’aide de la ES_JAVA_OPTS variable d’environnement. Par exemple, pour utiliser 1 Go, utilisez la commande suivante.

docker run -e ES_JAVA_OPTS="-Xms1g -Xmx1g" -e ENROLLMENT_TOKEN="<token>" --name es01 -p 9200:9200 --net elastic -it docker.elastic.co/elasticsearch/elasticsearch:8.13.4

La ES_JAVA_OPTSvariable remplace toutes les autres options JVM. Nous déconseillons son utilisation ES_JAVA_OPTSen production.

Épingler les déploiements sur une version d’image spécifique

Épinglez vos déploiements à une version spécifique de l’image Docker d’Elasticsearch. Par exemple docker.elastic.co/elasticsearch/elasticsearch:8.13.4.

Toujours lier les volumes de données

Vous devez utiliser un volume relié /usr/share/elasticsearch/datapour les raisons suivantes :

  1. Les données de votre nœud Elasticsearch ne seront pas perdues si le conteneur est supprimé
  2. Elasticsearch est sensible aux E/S et le pilote de stockage Docker n’est pas idéal pour les E/S rapides
  3. Il permet l’utilisation de plugins de volume Docker avancés

Évitez d’utiliser loop-lvmle mode

Si vous utilisez le pilote de stockage Devicemapper, n’utilisez pas le loop-lvmmode par défaut. Configurez docker-engine pour utiliser direct-lvm .

Centralisez vos logs

Pensez à centraliser vos journaux en utilisant un autre pilote de journalisation . Notez également que le pilote de journalisation de fichiers JSON par défaut n’est pas idéal pour une utilisation en production.

Configuration d’Elasticsearch avec Docker

Lorsque vous exécutez dans Docker, les fichiers de configuration Elasticsearch sont chargés à partir de /usr/share/elasticsearch/config/.

Pour utiliser des fichiers de configuration personnalisés, vous montez les fichiers en liaison sur les fichiers de configuration dans l’image.

Vous pouvez définir des paramètres de configuration Elasticsearch individuels à l’aide des variables d’environnement Docker. L’ exemple de fichier de composition et l’ exemple à nœud unique utilisent cette méthode. Vous pouvez utiliser le nom du paramètre directement comme nom de variable d’environnement. Si vous ne pouvez pas le faire, par exemple parce que votre plateforme d’orchestration interdit les points dans les noms de variables d’environnement, vous pouvez utiliser un style alternatif en convertissant le nom du paramètre comme suit.

  1. Changez le nom du paramètre en majuscule
  2. Préfixez-le avecES_SETTING_
  3. Échapper aux traits de soulignement ( _) en les dupliquant
  4. Convertir tous les points ( .) en traits de soulignement ( _)

Par exemple, -e bootstrap.memory_lock=truedevient -e ES_SETTING_BOOTSTRAP_MEMORY__LOCK=true.

Vous pouvez utiliser le contenu d’un fichier pour définir la valeur des variables d’environnement ELASTIC_PASSWORDou KEYSTORE_PASSWORD, en suffixant le nom de la variable d’environnement avec _FILE. Ceci est utile pour transmettre des secrets tels que des mots de passe à Elasticsearch sans les spécifier directement.

Par exemple, pour définir le mot de passe d’amorçage Elasticsearch à partir d’un fichier, vous pouvez lier le montage du fichier et définir la ELASTIC_PASSWORD_FILEvariable d’environnement sur l’emplacement de montage. Si vous montez le fichier de mots de passe sur /run/secrets/bootstrapPassword.txt, spécifiez :

-e ELASTIC_PASSWORD_FILE=/run/secrets/bootstrapPassword.txt

Vous pouvez remplacer la commande par défaut de l’image afin de transmettre les paramètres de configuration Elasticsearch en tant qu’options de ligne de commande. Par exemple:

docker run <various parameters> bin/elasticsearch -Ecluster.name=mynewclustername

Bien que le montage en liaison de vos fichiers de configuration soit généralement la méthode préférée en production, vous pouvez également créer une image Docker personnalisée contenant votre configuration.

Montage des fichiers de configuration Elasticsearch

Créez des fichiers de configuration personnalisés et montez-les en liaison sur les fichiers correspondants dans l’image Docker. Par exemple, pour effectuer un montage en liaison custom_elasticsearch.ymlavec docker run, spécifiez :

-v full_path_to/custom_elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml

Si vous montez en liaison un elasticsearch.ymlfichier personnalisé, assurez-vous qu’il inclut le network.host: 0.0.0.0paramètre. Ce paramètre garantit que le nœud est accessible pour le trafic HTTP et de transport, à condition que ses ports soient exposés. Le fichier intégré de l’image Docker elasticsearch.ymlinclut ce paramètre par défaut.

Le conteneur exécute Elasticsearch en tant qu’utilisateur elasticsearchutilisant uid:gid1000:0 . Les répertoires et fichiers hôtes montés sur Bind doivent être accessibles par cet utilisateur, et les répertoires de données et de journaux doivent être accessibles en écriture par cet utilisateur.

Créer un magasin de clés Elasticsearch chiffré

Par défaut, Elasticsearch générera automatiquement un fichier de clés pour les paramètres sécurisés . Ce fichier est masqué mais non chiffré.

Pour chiffrer vos paramètres sécurisés avec un mot de passe et les conserver en dehors du conteneur, utilisez docker runplutôt une commande pour créer manuellement le magasin de clés. La commande doit :

  • Lier-monter le configrépertoire. La commande créera un elasticsearch.keystorefichier dans ce répertoire. Pour éviter les erreurs, ne montez pas directement le elasticsearch.keystorefichier en liaison.
  • Utilisez l’ elasticsearch-keystoreoutil avec l’ create -poption. Vous serez invité à saisir un mot de passe pour le magasin de clés.

Par exemple:

docker run -it --rm \
-v full_path_to/config:/usr/share/elasticsearch/config \
docker.elastic.co/elasticsearch/elasticsearch:8.13.4 \
bin/elasticsearch-keystore create -p

Vous pouvez également utiliser une docker runcommande pour ajouter ou mettre à jour des paramètres sécurisés dans le magasin de clés. Vous serez invité à saisir les valeurs de réglage. Si le magasin de clés est chiffré, vous serez également invité à saisir le mot de passe du magasin de clés.

docker run -it --rm \
-v full_path_to/config:/usr/share/elasticsearch/config \
docker.elastic.co/elasticsearch/elasticsearch:8.13.4 \
bin/elasticsearch-keystore \
add my.secure.setting \
my.other.secure.setting

Si vous avez déjà créé le magasin de clés et que vous n’avez pas besoin de le mettre à jour, vous pouvez directement monter le elasticsearch.keystorefichier en liaison. Vous pouvez utiliser la KEYSTORE_PASSWORDvariable d’environnement pour fournir le mot de passe du magasin de clés au conteneur au démarrage. Par exemple, une docker runcommande peut avoir les options suivantes :

-v full_path_to/config/elasticsearch.keystore:/usr/share/elasticsearch/config/elasticsearch.keystore
-e KEYSTORE_PASSWORD=mypassword

Utiliser des images Docker personnalisées

Dans certains environnements, il peut être plus judicieux de préparer une image personnalisée contenant votre configuration. Pour Dockerfiley parvenir, cela pourrait être aussi simple que :

FROM docker.elastic.co/elasticsearch/elasticsearch:8.13.4
COPY --chown=elasticsearch:elasticsearch elasticsearch.yml /usr/share/elasticsearch/config/

Vous pouvez ensuite créer et exécuter l’image avec :

docker build -- tag = elasticsearch - custom . 
docker run - ti - v / usr / share / elasticsearch / data elasticsearch - personnalisé

Certains plugins nécessitent des autorisations de sécurité supplémentaires. Vous devez les accepter explicitement soit en :

  • Joindre un ttylorsque vous exécutez l’image Docker et autoriser les autorisations lorsque vous y êtes invité.
  • Inspecter les autorisations de sécurité et les accepter (le cas échéant) en ajoutant l’ --batchindicateur à la commande d’installation du plugin.

 

Résoudre les erreurs Docker pour Elasticsearch

Voici comment résoudre les erreurs courantes lors de l’exécution d’Elasticsearch avec Docker.

elasticsearch.keystore est un répertoire

Exception in thread "main" org.elasticsearch.bootstrap.BootstrapException: java.io.IOException: Is a directory: SimpleFSIndexInput(path="/usr/share/elasticsearch/config/elasticsearch.keystore") Likely root cause: java.io.IOException: Is a directory

Une commande liée au magasin de clés docker run a tenté de monter directement en liaison un elasticsearch.keystorefichier qui n’existe pas. Si vous utilisez l’ indicateur -vou --volumepour monter un fichier qui n’existe pas, Docker crée à la place un répertoire avec le même nom.

Pour résoudre cette erreur :

  1. Supprimez le elasticsearch.keystorerépertoire dans le configrépertoire.
  2. Mettez à jour l’ indicateur -vou --volumepour qu’il pointe vers le configchemin du répertoire plutôt que vers le chemin du fichier de clés.
  3. Réessayez la commande.

elasticsearch.keystore : appareil ou ressource occupé

Exception in thread "main" java.nio.file.FileSystemException: /usr/share/elasticsearch/config/elasticsearch.keystore.tmp -> /usr/share/elasticsearch/config/elasticsearch.keystore: Device or resource busy

Une docker runcommande a tenté de mettre à jour le magasin de clés tout en montant directement le elasticsearch.keystorefichier en liaison. Pour mettre à jour le magasin de clés, le conteneur doit accéder à d’autres fichiers du configrépertoire, tels que keystore.tmp.

Pour résoudre cette erreur :

  1. Mettez à jour l’ indicateur -vou --volumepour qu’il pointe vers le configchemin du répertoire plutôt que vers le chemin du fichier de clés.
  2. Réessayez la commande.

Dr Omar omari

Je suis Omar, fondateur de Voyage Voices. Avec des années d'expérience en croisière, je me consacre à vous guider à travers la vaste mer d'informations sur la croisière. Lorsque vous ne naviguez pas ou ne faites pas de recherche, je vous fournis des conseils fiables et à jour pour vous aider à créer l'expérience de croisière parfaite. Laissez-moi être votre boussole de confiance dans le monde des croisières.

Voir tous les articles de Dr Omar omari →

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *