Не удается выполнить фиксацию Docker, недостаточно места - PullRequest
0 голосов
/ 02 января 2019

Так что я довольно новичок в докере и все еще пытаюсь понять некоторые основные вещи.На данный момент у меня есть два образа докера:

[root:kali:~]# docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
kalilinux/kali-linux-docker   latest              5e4d6c84829d        About an hour ago   9.57GB
kalilinux/kali-linux-docker   <none>              f26f3ae90aee        2 months ago        1.57GB

По какой-то причине первый с тегом latest является дочерним по отношению к другому.Предполагая, что контейнер с тегом latest является контейнером, в который я внес изменения.

Однако сейчас я пытаюсь зафиксировать / сохранить изменения в этом изображении, но получаю следующую ошибку:

Ошибка ответа от демона: Ошибка при обработке tar-файла (состояние выхода 1): запись /usr/lib/x86_64-linux-gnu/libclang-7.so.1: на устройстве не осталось места

Я проверил свое дисковое пространство, и, похоже, у меня есть 4 ГБ свободного места:

[root:kali:~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            481M     0  481M   0% /dev
tmpfs            99M  944K   98M   1% /run
/dev/vda1        25G   20G  4.1G  83% /
tmpfs           493M     0  493M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           493M     0  493M   0% /sys/fs/cgroup
/dev/vda15      105M  3.6M  101M   4% /boot/efi
/dev/loop0       88M   88M     0 100% /snap/core/5662
/dev/loop1       67M   67M     0 100% /snap/lxd/9239
tmpfs            99M     0   99M   0% /run/user/0
overlay          25G   20G  4.1G  83% /var/lib/docker/overlay2/b2178e65852a017f21124a23d63e32a66faaa8b8375429865e8433da9fc0db20/merged
shm              64M     0   64M   0% /var/lib/docker/containers/af2d2ed99d91d2247f550a23af988ce4a624e186ac80782046f0868418547d3d/mounts/shm
/dev/loop2       90M   90M     0 100% /snap/core/6130
/dev/loop3       52M   52M     0 100% /snap/lxd/9795

Итак, вот мои вопросы:

  1. Есть ли способчто я могу объединить два моих изображения, чтобы не получить кучу дочерних изображений?
  2. Действительно ли команда docker commit пытается сделать копию контейнера?Или это просто сохранение?Моя причина этого вопроса в том, что у меня осталось только 4 ГБ, но у меня есть изображение именно так, как я хочу, так почему бы просто не сохранить?Будут ли понадобиться дополнительные 9 ГБ пространства каждый каждый раз, когда я запускаю commit?

Попытка избежать отключения VPS и увеличения дискового пространства, если я могу помочь.

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 02 января 2019

Насколько я знаю, объединить изображения невозможно, но удалить их можно.С каждым коммитом вы увеличиваете размер своего изображения.Вы можете взглянуть на слои изображения и их размер с помощью:

docker history <image name>

Вместо работы со старыми изображениями вы можете использовать Dockerfile и создать изображение, которое вы хотите использовать с нуля.Построение иногда занимает больше времени, но вы должны найти способ автоматического создания образов, чтобы иметь возможность повторять их для производственного использования.Если вы создаете изображения с нуля и используете некоторые проверенные изображения, вы получите новую исправленную версию бесплатно.В Dockerfile вы можете иметь максимум 125 слоев, что означает, что вы должны использовать как можно меньше команд RUN и объединять их в цепочки с linux / unix нотацией, например,

RUN apt-get update -y && apt-get install -y \
  ansible \
  openssh-client \
  vim \
  wget

https://docs.docker.com/engine/reference/builder/

https://github.com/dockerfile/ubuntu/blob/master/Dockerfile

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...