Docker - 麋鹿 - vm.max_map_count
Docker - ELK - vm.max_map_count
我正在尝试使用 docker 的图像 elk-docker (https://elk-docker.readthedocs.io/) ,使用 Docker 撰写。 .yml 文件,是这样的:
elk:
image: sebp/elk
ports:
- "5601:5601"
- "9200:9200"
- "5044:5044"
当我运行命令:sudo docker-compose up时,控制台显示:
* Starting Elasticsearch Server
sysctl: setting key "vm.max_map_count": Read-only file system
...fail!
waiting for Elasticsearch to be up (1/30)
waiting for Elasticsearch to be up (2/30)
waiting for Elasticsearch to be up (3/30)
waiting for Elasticsearch to be up (4/30)
waiting for Elasticsearch to be up (5/30)
waiting for Elasticsearch to be up (6/30)
waiting for Elasticsearch to be up (7/30)
waiting for Elasticsearch to be up (8/30)
waiting for Elasticsearch to be up (9/30)
waiting for Elasticsearch to be up (10/30)
waiting for Elasticsearch to be up (11/30)
waiting for Elasticsearch to be up (12/30)
waiting for Elasticsearch to be up (13/30)
waiting for Elasticsearch to be up (14/30)
waiting for Elasticsearch to be up (15/30)
waiting for Elasticsearch to be up (16/30)
waiting for Elasticsearch to be up (17/30)
waiting for Elasticsearch to be up (18/30)
waiting for Elasticsearch to be up (19/30)
waiting for Elasticsearch to be up (20/30)
waiting for Elasticsearch to be up (21/30)
waiting for Elasticsearch to be up (22/30)
waiting for Elasticsearch to be up (23/30)
waiting for Elasticsearch to be up (24/30)
waiting for Elasticsearch to be up (25/30)
waiting for Elasticsearch to be up (26/30)
waiting for Elasticsearch to be up (27/30)
waiting for Elasticsearch to be up (28/30)
waiting for Elasticsearch to be up (29/30)
waiting for Elasticsearch to be up (30/30)
Couln't start Elasticsearch. Exiting.
Elasticsearch log follows below.
cat: /var/log/elasticsearch/elasticsearch.log: No such file or directory
docker_elk_1 exited with code 1
我该如何解决这个问题?
您可能需要在主机本身的 /etc/sysctl.conf
中设置 vm.max_map_count
,这样 Elasticsearch 就不会尝试从容器内部执行此操作。如果您不知道所需的值,请尝试将当前设置加倍并继续,直到 Elasticsearch 成功启动。 Documentation recommends至少262144。
在 Docker 主机终端(Docker CLI)运行 命令中:
docker-machine ssh
sudo sysctl -w vm.max_map_count=262144
exit
进入你的 docker 容器
# docker exec -it <container_id> /bin/bash
您可以查看您当前的max_map_count值
# more /proc/sys/vm/max_map_count
临时设置max_map_count值(容器(主机)重启不会持久化max_map_count 值)
# sysctl -w vm.max_map_count=262144
永久设置值
1. # vi /etc/sysctl.conf
vm.max_map_count=262144
2. # vi /etc/rc.local
#put parameter inside rc.local file
echo 262144 > /proc/sys/vm/max_map_count
您可以通过两种方式做到这一点。
- 临时设置max_map_count:
- sudo sysctl -w vm.max_map_count=262144
但这只会持续到您重新启动系统。
- 永久
- 在您的主机中
- vi /etc/sysctl.conf
- 输入
vm.max_map_count=262144
- 重启
您必须至少在 /etc/sysctl.conf 中设置 vm.max_map_count 变量 262144
之后您可以使用 sysctl --system
重新加载设置
我正在尝试使用 docker 的图像 elk-docker (https://elk-docker.readthedocs.io/) ,使用 Docker 撰写。 .yml 文件,是这样的:
elk:
image: sebp/elk
ports:
- "5601:5601"
- "9200:9200"
- "5044:5044"
当我运行命令:sudo docker-compose up时,控制台显示:
* Starting Elasticsearch Server
sysctl: setting key "vm.max_map_count": Read-only file system
...fail!
waiting for Elasticsearch to be up (1/30)
waiting for Elasticsearch to be up (2/30)
waiting for Elasticsearch to be up (3/30)
waiting for Elasticsearch to be up (4/30)
waiting for Elasticsearch to be up (5/30)
waiting for Elasticsearch to be up (6/30)
waiting for Elasticsearch to be up (7/30)
waiting for Elasticsearch to be up (8/30)
waiting for Elasticsearch to be up (9/30)
waiting for Elasticsearch to be up (10/30)
waiting for Elasticsearch to be up (11/30)
waiting for Elasticsearch to be up (12/30)
waiting for Elasticsearch to be up (13/30)
waiting for Elasticsearch to be up (14/30)
waiting for Elasticsearch to be up (15/30)
waiting for Elasticsearch to be up (16/30)
waiting for Elasticsearch to be up (17/30)
waiting for Elasticsearch to be up (18/30)
waiting for Elasticsearch to be up (19/30)
waiting for Elasticsearch to be up (20/30)
waiting for Elasticsearch to be up (21/30)
waiting for Elasticsearch to be up (22/30)
waiting for Elasticsearch to be up (23/30)
waiting for Elasticsearch to be up (24/30)
waiting for Elasticsearch to be up (25/30)
waiting for Elasticsearch to be up (26/30)
waiting for Elasticsearch to be up (27/30)
waiting for Elasticsearch to be up (28/30)
waiting for Elasticsearch to be up (29/30)
waiting for Elasticsearch to be up (30/30)
Couln't start Elasticsearch. Exiting.
Elasticsearch log follows below.
cat: /var/log/elasticsearch/elasticsearch.log: No such file or directory
docker_elk_1 exited with code 1
我该如何解决这个问题?
您可能需要在主机本身的 /etc/sysctl.conf
中设置 vm.max_map_count
,这样 Elasticsearch 就不会尝试从容器内部执行此操作。如果您不知道所需的值,请尝试将当前设置加倍并继续,直到 Elasticsearch 成功启动。 Documentation recommends至少262144。
在 Docker 主机终端(Docker CLI)运行 命令中:
docker-machine ssh
sudo sysctl -w vm.max_map_count=262144
exit
进入你的 docker 容器
# docker exec -it <container_id> /bin/bash
您可以查看您当前的max_map_count值
# more /proc/sys/vm/max_map_count
临时设置max_map_count值(容器(主机)重启不会持久化max_map_count 值)
# sysctl -w vm.max_map_count=262144
永久设置值
1. # vi /etc/sysctl.conf vm.max_map_count=262144 2. # vi /etc/rc.local #put parameter inside rc.local file echo 262144 > /proc/sys/vm/max_map_count
您可以通过两种方式做到这一点。
- 临时设置max_map_count:
- sudo sysctl -w vm.max_map_count=262144
但这只会持续到您重新启动系统。
- sudo sysctl -w vm.max_map_count=262144
- 永久
- 在您的主机中
- vi /etc/sysctl.conf
- 输入 vm.max_map_count=262144
- 重启
- 在您的主机中
您必须至少在 /etc/sysctl.conf 中设置 vm.max_map_count 变量 262144
之后您可以使用 sysctl --system
重新加载设置