鏡像官網:https://hub.docker.com/
拉取最新版本的Elasticsearch服務(具體指定版本,可以去上面提供的官網找到):
docker pull elasticsearch
這時候會出一個報錯問題(意思就是找不到這個最新版本):
[root@VM_0_13_centos /]# docker pull elasticsearch
Using default tag: latest
Error response from daemon: manifest for elasticsearch:latest not found: manifest unknown: manifest unknown
既然這樣,我就指定一個版本唄,指定的也是2020年6月份的最高版本:
[root@VM_0_13_centos /]# docker pull elasticsearch:7.8.0
啓動Elasticsearch:
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.8.0
啓動之後,確實啓動成功了,但是幾秒鐘後,會自動停止,查看日誌:
docker logs 2adc715a3a9a # 查看某個容器的日誌
結果(大概意思就是內存不夠):
[root@VM_0_13_centos /]# docker logs 2adc715a3a9a
Exception in thread "main" java.lang.RuntimeException: starting java failed with [1]
output:
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 1073741824 bytes for committing reserved memory.
# An error report file with more information is saved as:
# logs/hs_err_pid132.log
error:
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c0000000, 1073741824, 0) failed; error='Not enough space' (errno=12)
at org.elasticsearch.tools.launchers.JvmErgonomics.flagsFinal(JvmErgonomics.java:126)
at org.elasticsearch.tools.launchers.JvmErgonomics.finalJvmOptions(JvmErgonomics.java:88)
at org.elasticsearch.tools.launchers.JvmErgonomics.choose(JvmErgonomics.java:59)
at org.elasticsearch.tools.launchers.JvmOptionsParser.jvmOptions(JvmOptionsParser.java:137)
at org.elasticsearch.tools.launchers.JvmOptionsParser.main(JvmOptionsParser.java:95)
Exception in thread "main" java.lang.RuntimeException: starting java failed with [1]
output:
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 1073741824 bytes for committing reserved memory.
# An error report file with more information is saved as:
# logs/hs_err_pid132.log
error:
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c0000000, 1073741824, 0) failed; error='Not enough space' (errno=12)
at org.elasticsearch.tools.launchers.JvmErgonomics.flagsFinal(JvmErgonomics.java:126)
at org.elasticsearch.tools.launchers.JvmErgonomics.finalJvmOptions(JvmErgonomics.java:88)
at org.elasticsearch.tools.launchers.JvmErgonomics.choose(JvmErgonomics.java:59)
at org.elasticsearch.tools.launchers.JvmOptionsParser.jvmOptions(JvmOptionsParser.java:137)
at org.elasticsearch.tools.launchers.JvmOptionsParser.main(JvmOptionsParser.java:95)
[root@VM_0_13_centos /]#
這時候需要先找出開始運行的容器:
docker ps -a
然後將之前啓動的容器刪除(爲每次啓動出問題的時候,最好將上面 和 這步執行一次):
docker rm 2adc715a3a9a
解決內存溢出的啓動命令:啓動命令加一個: -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" 也可以再大一點。
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" -e "discovery.type=single-node" elasticsearch:7.8.0
啓動完畢後訪問: http://當前ip地址:9200/
如果啓動依然不成功,畢竟測試服務器的內存是很小的:
最終版解決方案:
執行:
find / -name jvm.options
執行:(後面的文件地址就是上面查的文件地址,一定要找目錄有elasticsearch的目錄地址)
vim /var/lib/docker/overlay2/08455b2d4591981dc85d3c6b737d84a7731fecccf903f044ac3ebaaad81f2b3d/diff/usr/share/elasticsearch/config/jvm.options
修改配置:(然後wq命令保存即可)
#-Xms1g # 註釋掉
#-Xmx1g # 註釋掉
-Xms512m #修改 一定要比當前服務器剩餘內存空間小
-Xmx512m # 修改 一定要比當前服務器剩餘內存空間小
再執行 elasticsearch啓動命令:
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.8.0
然後等2分鐘,再訪問 http://當前ip地址:9200/ 訪問成功出現json數據就好了。
docker run -it -d --restart=always -e KAFKA_BOOTSTRAP_SERVERS=10.0.1.66:9092 -e STORAGE_TYPE=elasticsearch:7.8.0 -e ES_HOSTS=http://10.0.1.66:9200 -p 9411:9411 openzipkin/zipkin:2.12.6
docker run -d --name zipkin_mq_es -p 9411:9411 -e RABBIT_ADDRESSES=172.16.57.103:5673 -e RABBIT_USER=admin -e RABBIT_PASSWORD=admin -e STORAGE_TYPE=elasticsearch:7.8.0 -e ES_HOSTS=http://119.27.184.220:9200 openzipkin/zipkin