Eu escrevi o primeiro artigo antes. Naquela época, quando carreguei a imagem do MySQL e montei o contêiner do MySQL, havia um estado Exited (1). Pensei que fosse por causa de várias instalações, mas não parece ser o caso agora. Embora tenha sido resolvido sem problemas no primeiro artigo, um pouco de conhecimento não é uma boa atitude do aluno.
Quando eu estava prestes a aprender ES recentemente, eu também puxei muitas imagens espelhadas. A primeira puxou a versão 5.1.1, rmi caiu, puxei várias vezes e encontrei a versão 5.1.2.
(A imagem oficial não pode ser extraída diretamente: docker pull elasticsearch5.1 usado. Este comando extrairá a última versão da imagem 5.1, que é a versão 5.1.2, e a versão mais recente parece ser 7.2.0)
Depois de carregar a imagem e montar o contêiner, o estado de Exited (1) reapareceu. Passei pelo processo no primeiro artigo e descobri que não poderia resolver o problema. Lamento por enganar os leitores (afinal, também sou um novato).
Insira o texto:
Pesquisei muito conteúdo relacionado na Internet e tratarei de algumas situações aqui, pois a situação que ocasionou o estado Saído (1) não é certa, então não me atrevo a me gabar de que desta vez pode resolver todos os problemas dos leitores. Este artigo fornece principalmente aos leitores ideias.
Como a depuração múltipla não conseguiu montar o contêiner , encontrei um comando na Internet ( verifique o log de montagem do contêiner , entendo assim):
docker logs elasticsearch_5.1.2
Através deste comando, montei novamente o container, o comando utilizado é (este também é um comando para limitar a memória, mas não sei porque não funcionou):
docker run -d -m 256M --memory-swap 512M -p 9200:9200 -p 9300:9300 --name elasticsearch_5.1.2 docker.io/elasticsearch:5.1.2
Use o comando log para visualizar o registro, o conteúdo é (aproximadamente significa que não há memória suficiente ):
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 2060255232 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /tmp/hs_err_pid1.log
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory' (errno=12)
Então fui verificar o que estava na memória , comando: docker stats -a (verifique a memória e outras informações ocupadas por todos os contêineres na memória), e saia com Ctrl + C
Em seguida, siga as dicas para encontrar uma das soluções para memória insuficiente na Internet e defina a variável de ambiente (aqui está o comando que posso usar para meu teste pessoal, muitos deles estão errados na Internet):
docker run -d -p 9200:9200 -p 9300:9300 -e ES_JAVA_OPTS="-Xms64M -Xmx256M" --name elasticsearch_5.1.2 docker.io/elasticsearch:5.1.2
Você pode tentar e explicar ao mesmo tempo:
-d: executa em segundo plano
-p: aponta para o número da porta
-e: Definir variáveis de ambiente (parece muito importante). ES_JAVA_OPTS nome da variável, -Xms limite inferior, -Xmx limite superior
Aqui está uma extensão (-m: definir o tamanho da memória), mas acho que não tem efeito depois de usá-la. Não sei por que, por favor, deixe uma mensagem para os leitores que sabem.
Depois de executar este comando, o container é montado com sucesso. Se houver algum problema, deixe uma mensagem e seguirei o CSDN a qualquer momento.