LINUX.ORG.RU
ФорумAdmin

ZFS Docker

 ,


0

1

Здарова лоровцы!

Есть ubuntu 17.10 на zfs, внезапно встала нужда заюзать docker-ce, однако с zfs он сильно плохо работает без настройки. Собственно настройка описана тут.

Как я понял, в доке сказано, что делать если у Вас отдельное запоминающее устройство, но отдельного нет в моём случае.

Итак, конфигурация сервера такая:

# zfs list
NAME                USED  AVAIL  REFER  MOUNTPOINT
rpool               384G  4,87T   128K  /
rpool/ROOT         7,19G  4,87T   128K  none
rpool/ROOT/ubuntu  7,19G  4,87T  6,55G  /
rpool/home          915M  4,87T   128K  /home
rpool/home/anton    915M  4,87T   915M  /home/anton
rpool/home/root     165K  4,87T   165K  /root
rpool/srv          52,4M  4,87T  52,4M  /srv
rpool/storage       370G  4,87T   370G  /storage
rpool/swap         4,25G  4,87T  2,86G  -
rpool/var          1,94G  4,87T   128K  /var
rpool/var/cache     758M  4,87T   758M  /var/cache
rpool/var/log      1,18G  4,87T  1,18G  legacy
rpool/var/mail      128K  4,87T   128K  /var/mail
rpool/var/spool    24,1M  4,87T  24,1M  /var/spool
rpool/var/tmp       181K  4,87T   181K  legacy

«/var/lib/docker» я так понимаю, что нужно сделать как отдельный раздел (датасет), но что-то не получается:

# zfs create -o mountpoint=/var/lib/docker rpool/var/lib/docker
cannot create 'rpool/var/lib/docker': parent does not exist

Собственно, вопросы. В том ли направлении я мыслю? И какого рожна не могу сделать датасет?

cannot create 'rpool/var/lib/docker': parent does not exist
родитель не существует.

darkenshvein ★★★★★ ()
Ответ на: комментарий от darkenshvein

Спасибо Кэп, но может есть путь решения этой проблемы?

AntonyRF ★★☆ ()

Кстати, вот ещё вывод

$ sudo zpool status
  pool: rpool
 state: ONLINE
  scan: scrub repaired 0 in 2h32m with 0 errors on Sun Apr  8 02:56:23 2018
config:

        NAME                                                STATE     READ WRITE CKSUM
        rpool                                               ONLINE       0     0     0
          raidz1-0                                          ONLINE       0     0     0
            ata-WDC_WD30EFRX-68EUZN0_WD-WMC4N1504421-part1  ONLINE       0     0     0
            ata-WDC_WD30EFRX-68EUZN0_WD-WMC4N1493481-part1  ONLINE       0     0     0
            ata-WDC_WD30EFRX-68AX9N0_WD-WMC1T1297132-part1  ONLINE       0     0     0

errors: No known data errors

AntonyRF ★★☆ ()
Ответ на: комментарий от AntonyRF

Создать родителей - не?

В zfs том с именем rpool/var/lib/docker должен быть подтомом для rpool/var/lib, который в свою очередь подтом для rpool/var, который подтом для rpool. У тебя чего-то в этой иерархии нет - например rpool/var/lib отсутствует :-)

Варианта 2:

1) создай всю недостающую иерархию томов;
2) создай только нужный тебе том сразу под корневым(rpool/docker) или var(rpool/var/docker) и переопредели точку монтирования на нужную тебе(/var/lib/docker как я понимаю);

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 1)

А так?

# zfs create -o mountpoint=/var/lib/docker rpool/docker

получается?

iZEN ★★★★★ ()
Ответ на: А так? от iZEN

получается?

Да, епрст, но почему мой вариант не взлетел?

AntonyRF ★★☆ ()

Скорее всего я делал как вышеотписавшийся. У меня в zfs list

rpool/var/docker    12.7G   470G   141M  /var/lib/docker

anonymous ()
Ответ на: комментарий от anonymous

Сейчас попробую установить docker и посмотрю, что он сделает с zfs

AntonyRF ★★☆ ()
Ответ на: комментарий от AntonyRF

Сейчас попробую установить docker и посмотрю, что он сделает с zfs

При работе контейнеров zfs list засрётся сотнями записей.

anonymous ()
Ответ на: комментарий от AntonyRF

А кстати, как-то можно будет очистить zfs list?

Не использовать внутри докера ZFS, а обойтись обычной каталожной структурой. Зачем усложнять и перекладывать часть ответственности на ZFS? Это же ощутимый оверхед, который никому не нужен. Контейнер не нужно усложнять вложенными «перегородками», через которые нужно «продираться» и тратить процессорное время на переключения контекстов.

iZEN ★★★★★ ()
Ответ на: комментарий от iZEN

Мне казалось, что docker-ce в zfs не может переключиться на работу с каталогами?

AntonyRF ★★☆ ()
Ответ на: комментарий от AntonyRF

Докер лучше бы не знал о ZFS ничего и работал с контейнером как с каталожной структурой.

При работе на ZFS достаточно изоляции контейнера снаружи размещением его в отдельной файловой системе - этим достигается и быстро решаются вопросы клонирования и передачи клона контейнера как единого целого по сети. Для Jail во FreeBSD это - оптимальное решение.

iZEN ★★★★★ ()
Последнее исправление: iZEN (всего исправлений: 1)
Ответ на: комментарий от AntonyRF

А кстати, как-то можно будет очистить zfs list?

А вольюмы там перманентно, вне зависимости от работы контейнеров?

anonymous ()
Ответ на: комментарий от anonymous

Я так понимаю, что все изменения в контейнере валятся в новые разделы. Так как когда я их удалял в прошлом году, то контейнер валился и помечался, дай Бог памяти, как dead и был гемор для их восстановления

AntonyRF ★★☆ ()
Ответ на: комментарий от AntonyRF

Ну в этом и смысл zfs-драйвера Docker. Что снепшоты делаются средствами zfs.

anonymous ()
Ответ на: комментарий от anonymous

Ну меня бы устроило вполне если бы Docker не использовал эти чудесные возможности ZFS =)

AntonyRF ★★☆ ()
Последнее исправление: AntonyRF (всего исправлений: 1)
Ответ на: Конкретнее от iZEN

Re: Конкретнее

Иными словами - если вы хотите запускать production на Docker - вам ничего другое не подойдет кроме Linux, поскольку официально проект разрабатывается и рассчитан на Linux экосистему.

Уже есть Docker-образы с Windows-софтом.

anonymous ()
Ответ на: комментарий от AntonyRF

Внутри z-пула лично у меня не получалось создать вложенный z-пул. Может сейчас что изменилось - не знаю. В изолированном окружении вряд ли понадобятся какие-то драйверы кроме виртуальных: ведь они есть в хостовой системе/ядре.

iZEN ★★★★★ ()
Ответ на: комментарий от iZEN

И так, чтобы контейнеры были просто файлами, что мне нужно прописать и в каких конфигах? =)

UPD: В /etc/docker/daemon.json вписать:

{
  "storage-driver": "overlay2"
}

Да?

AntonyRF ★★☆ ()
Последнее исправление: AntonyRF (всего исправлений: 1)
Ответ на: комментарий от iZEN

Печально, но всё равно спасибо. Попробую свой вариант, хотя в целом и так сойдёт

AntonyRF ★★☆ ()
Ответ на: комментарий от AntonyRF

Печально иметь дело с докером, когда есть jail.

iZEN ★★★★★ ()
Ответ на: комментарий от iZEN

Да мне докер то нужен исключительно для collabora или onlyoffice чтобы с интегрировать в NextCloud. А jail в linux я так понимаю нет, это же вроде фрибсдешная штука?

AntonyRF ★★☆ ()
Ответ на: комментарий от AntonyRF

В Linux есть собственная технология контейнеризации в изолированных окружениях - LXC.

iZEN ★★★★★ ()
Ответ на: комментарий от iZEN

Кстати, как я и говорил docker на zfs стартует только если указан storage-driver - «zfs»

AntonyRF ★★☆ ()

И какого рожна не могу сделать датасет?

там жеж написано: parent does not exist Я бы сделал что-то типа # zfs create -o mountpoint=legacy rpool/var/lib а потому уже # zfs create -o mountpoint=/var/lib/docker rpool/var/lib/docker

Либо # zfs create -o mountpoint=/var/lib/docker rpool/docker

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.