docker pull elasticsearch:7.6.0


mkdir /home/elk
vi /home/elk/elasticsearch.yml

cluster.name: "docker-cluster"
network.host: 0.0.0.0
# 访问ID限定,0.0.0.0为不限制,生产环境请设置为固定IP
transport.host: 0.0.0.0
# elasticsearch节点名称
node.name: node-1
# elasticsearch节点信息
cluster.initial_master_nodes: ["node-1"]
# 下面的配置是关闭跨域验证
http.cors.enabled: true
http.cors.allow-origin: "*"

docker run -di -p 9200:9200 -p 9300:9300 --name=elasticsearch -v /home/elk/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml elasticsearch:7.6.0


启动 elasticsearch 闪退

docker container ls -a
docker logs elasticsearch


[root@ELK usr]# docker logs elasticsearch

OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.

2020-12-25 01:26:26,175 main ERROR No Log4j 2 configuration file found. Using default configuration (logging only errors to the console), or user programmatically provided configurations. Set system property 'log4j2.debug' to show Log4j 2 internal initialization logging. See https://logging.apache.org/log4j/2.x/manual/configuration.html for instructions on how to configure Log4j 2

Exception in thread "main" SettingsException[Failed to load settings from /usr/share/elasticsearch/config/elasticsearch.yml]; nested: AccessDeniedException[/usr/share/elasticsearch/config/elasticsearch.yml];

        at org.elasticsearch.node.InternalSettingsPreparer.prepareEnvironment(InternalSettingsPreparer.java:85)

        at org.elasticsearch.cli.EnvironmentAwareCommand.createEnv(EnvironmentAwareCommand.java:100)

        at org.elasticsearch.cli.EnvironmentAwareCommand.createEnv(EnvironmentAwareCommand.java:91)

        at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)

        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:125)

        at org.elasticsearch.cli.Command.main(Command.java:90)

        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:126)

        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92)

Caused by: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/config/elasticsearch.yml

        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.newByteChannel(UnixFileSystemProvider.java:219)

        at java.base/java.nio.file.Files.newByteChannel(Files.java:374)

        at java.base/java.nio.file.Files.newByteChannel(Files.java:425)

        at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420)

        at java.base/java.nio.file.Files.newInputStream(Files.java:159)

        at org.elasticsearch.common.settings.Settings$Builder.loadFromPath(Settings.java:1070)

        at org.elasticsearch.node.InternalSettingsPreparer.prepareEnvironment(InternalSettingsPreparer.java:83)

        ... 7 more

docker container ls -a

docker container stop elasticsearch

#删除 container

docker container rm elasticsearch

#新建container
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.0

#拷出配置文件
docker cp elasticsearch:/usr/share/elasticsearch/config/ /home/elk/
chmod +777 /home/elk/config/ -R

mkdir /home/elk/data
chmod + 777 /home/elk/data -R

#停止container
docker container stop elasticsearch

#删除 container
docker container rm elasticsearch

docker run --name elasticsearch -v /home/elk/config/:/usr/share/elasticsearch/config -v /home/elk/data/:/usr/share/elasticsearch/data -p 9200:9200 -p 9300:9300 --privileged=true -d elasticsearch:7.6.0

docker container ls -a

docker logs elasticsearch

成功