превышена дисковая квота при попытке развернуть контейнер Docker внутри LXC

Политики перезапуска Docker

Docker предоставляет функцию, которая решает эту проблему, которая называется Политика перезапуска Docker:

Docker provides restart policies to control whether your containers start automatically when they exit, or when Docker restarts. Restart policies ensure that linked containers are started in the correct order. Docker recommends that you use restart policies, and avoid using process managers to start containers.

Типы политик перезапуска:

no                  Do not automatically restart the container. (the default)

on-failure          Restart the container if it exits due to an error, which
                    manifests as a non-zero exit code.

unless-stopped      Restart the container unless it is explicitly stopped or 
                    Docker itself is stopped or restarted.

always              Always restart the container if it stops.

Использование

Затем вы можете использовать политику перезапуска, подобную этой:

$ docker run -dit --restart always redis

Соображения

  • A restart policy only takes effect after a container starts successfully. In this case, starting successfully means that the container is up for at least 10 seconds and Docker has started monitoring it. This prevents a container which does not start at all from going into a restart loop.

  • If you manually stop a container, its restart policy is ignored until the Docker daemon restarts or the container is manually restarted. This is another attempt to prevent a restart loop.

  • Restart policies only apply to containers. Restart policies for swarm services are configured differently. See the flags related to service restart.

Пример

Здесь мы собираемся использовать контейнер hello -world Docker , чтобы проиллюстрировать, как это работает.

Для начала тянем вниз:

$ docker pull hello-world
Using default tag: latest
Trying to pull repository docker.io/library/hello-world...
latest: Pulling from docker.io/library/hello-world
9db2ca6ccae0: Pull complete
Digest: sha256:4b8ff392a12ed9ea17784bd3c9a8b1fa3299cac44aca35a85c90c5e3c7afacdc
Status: Downloaded newer image for docker.io/hello-world:latest
$ 

Загрузив наш контейнер, запустим его:

$ docker run -dit --restart always hello-world
0f6a61dddd3b667727a20df2c198941b2202653a71b6c86b8ace7b236bafc974

И если мы запустим пару docker ps, мы увидим, что он перезапускается снова и снова:

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                              PORTS               NAMES
0f6a61dddd3b        hello-world         "/hello"            27 seconds ago      Up Less than a second                                   upbeat_brown

...time passes...

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                              PORTS               NAMES
0f6a61dddd3b        hello-world         "/hello"            5 minutes ago       Restarting (0) About a minute ago                       upbeat_brown

...time passes...
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                         PORTS               NAMES
0f6a61dddd3b        hello-world         "/hello"            10 minutes ago      Restarting (0) 3 minutes ago                       upbeat_brown

Глядя на журналы Docker, мы видим, что он перезапускается несколько раз:

$ docker logs 0f6a61dddd3b -f | grep "Hello from Docker"
Hello from Docker!
Hello from Docker!
Hello from Docker!
Hello from Docker!
Hello from Docker!
Hello from Docker!
Hello from Docker!
Hello from Docker!
Hello from Docker!
Hello from Docker!
Hello from Docker!
Hello from Docker!
Hello from Docker!

Когда вы закончите, обязательно остановите контейнер, чтобы он не перезапустился навсегда:

$ docker stop 0f6
0f6

Ваше исправление

Чтобы решить проблему, просто запустите контейнер HBase Docker:

$ docker run -d --hostname hbase-db --name hbase --restart always \
    -p 2181:2181   -p 8080:8080   -p 8085:8085   -p 9090:9090   -p 9095:9095 \
    -p 16000:16000 -p 16010:16010 -p 16201:16201 -p 16301:16301 \
    harisekhon/hbase

Ссылки

1
29.07.2020, 22:30
1 ответ

Здесь проблема не в корневой файловой системе, а в связке ключей ядра . Этот поток LXC хорошо объясняет это и имеет следующее решение :на хосте LXC(не внутри контейнера LXC ), увеличьте максимальное количество ключей с помощью:

echo 5000 | sudo tee /proc/sys/kernel/keys/maxkeys

5000заведомо произволен; выберите число, которое больше, чем то, что у вас есть сейчас.

Цитата Стефана Грабера, сопровождающего LXD, из темы:

Kinda sounds like Docker may be attempting to use the kernel keyring? That’d certainly be a new behavior from them…

и спасибо simos также из этой ветки за предоставленную команду, которая решила эту проблему для меня.

Дополнительная ссылка на GitHub

3
18.03.2021, 23:16

Теги

Похожие вопросы