31 lines
1.4 KiB
Bash
Executable File
31 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
|
||
# https://fabianlee.org/2020/01/18/docker-placing-limits-on-container-memory-using-cgroups/
|
||
|
||
# Internally Docker uses cgroups to limit memory resources, and in its simplest form is exposed as the flags “-m” and “–memory-swap” when bringing up a docker container.
|
||
|
||
# sudo docker run -it -m 8m --memory-swap 8m alpine:latest /bin/sh
|
||
|
||
# If you see the message above, or “WARNING: Your kernel does not support cgroup swap limit.”,
|
||
# then modify “/etc/default/grub” as below:
|
||
|
||
## Docker likes kernel swappiness support (on reboot)
|
||
bash -c "$(perl -p -i -e 's/GRUB_CMDLINE_LINUX=""/GRUB_CMDLINE_LINUX="cgroup_enable=memory"/g' /etc/default/grub)"
|
||
|
||
#Now that your server supports swap limit capabilities in your docker run command you can use --memory-swappiness=0 and set --memory-swap equal to --memory. You also need to set -Des.bootstrap.mlockall=true on the docker run commandline.
|
||
|
||
# eg.
|
||
# https://stefanprodan.com/2016/elasticsearch-cluster-with-docker/
|
||
|
||
# docker run -d -p 9200:9200 \
|
||
# --name es-t0 \
|
||
# --network es-net \
|
||
# -v "$PWD/storage":/usr/share/elasticsearch/data \
|
||
# --cap-add=IPC_LOCK --ulimit nofile=65536:65536 --ulimit memlock=-1:-1 \
|
||
# --memory="2g" --memory-swap="2g" --memory-swappiness=0 \
|
||
# -e ES_HEAP_SIZE="1g" \
|
||
# es-t \
|
||
# -Des.bootstrap.mlockall=true \
|
||
# -Des.network.host=_eth0_ \
|
||
# -Des.discovery.zen.ping.multicast.enabled=false
|