Инструменты пользователя

Инструменты сайта


howto:sysadmin:lxd

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
howto:sysadmin:lxd [2022/04/19 13:32]
ryzhikov
howto:sysadmin:lxd [2024/12/21 03:57] (текущий)
Строка 7: Строка 7:
 # Сделать снапшот контейнера:​ # Сделать снапшот контейнера:​
 lxc snapshot <​containername>​ <​snapshotname>​ lxc snapshot <​containername>​ <​snapshotname>​
 +
 +# Стартовать контейнер:​
 +lxc start <​containername>​
 </​code>​ </​code>​
 +
 +===== Монтирование директорий по NFS =====
 +
 +С этим сложности. В непривилегированных контейнерах не получится монтировать что-то по NFS.
 +
 +Решение:​ примонтировать по NFS в на LXD-хосте,​ а затем подключить примонтированную директорию к контейнеру в качестве диска. ​
 +
 +:!: В LXD обнаружился занятный баг: если подключенную диреткорию не удается примонтировать по NFS, то контейнер не сможет стартовать. Установка опции required диска в false не поможет. Чтобы контейнер смог стартовать,​ директория должна либо отсутствовать,​ либо быть примонтирована без ошибок. ​
 +
 +Поэтому automount работать не будет, и вместо него нужно использовать autofs:
 +
 +<file txt /​etc/​auto.nfsmounts>​
 +daqserv1 ​       -fstype=nfs4,​soft,​rsize=131072,​wsize=32768 ​     daqserv1:/​data
 +</​file>​
 +
 +<file yaml lxc profile edit bind-data-dirs>​
 +devices:
 +  daqserv1:
 +    path: /daqserv1/
 +    required: "​false"​
 +    source: /​nfsmounts/​daqserv1/​
 +    type: disk
 +</​file>​
 +
 +
 +===== Проблемы с Docker =====
 +Docker перезаписывает правила фаервола (баг https://​github.com/​docker/​for-linux/​issues/​103,​ который разработчики пока не починили). После перезагрузки новые правила фаервола заблокировали связь контейнеров LXD.
 +
 +Решение — самостоятельно добавить правила фаервола,​ разрешающие общение контейнеров LXD:
 +    sudo iptables -I DOCKER-USER -i lxdbr0 -j ACCEPT -m comment --comment "​generated for LXD network lxdbr0"​
 +    sudo iptables -I DOCKER-USER -o lxdbr0 -j ACCEPT -m comment --comment "​generated for LXD network lxdbr0"​
 +
 +
 +Автоматическое добавление правил в хуке на ifup может не работать,​ поскольку чейны DOCKER могут еще не быть созданы к этому моменту.
 +
 +Поэтому создаем свой сервис,​ который будет стартовать после docker и добавлять нужные правила:​
 +
 +<file sh /​usr/​local/​bin/​post-docker.sh>​
 +
 +#​!/​usr/​bin/​env bash
 +
 +date > /​var/​log/​post-docker-timestamp
 +iptables -I DOCKER-USER -i lxdbr0 -j ACCEPT -m comment --comment "​generated for LXD network lxdbr0"​
 +iptables -I DOCKER-USER -o lxdbr0 -j ACCEPT -m comment --comment "​generated for LXD network lxdbr0"​
 +</​file>​
 +
 +<file ini /​etc/​systemd/​system/​postdocker.service>​
 +
 +[Unit]
 +Description=Post Docker
 +After=docker.service
 +BindsTo=docker.service
 +ReloadPropagatedFrom=docker.service
 +
 +[Service]
 +Type=oneshot
 +ExecStart=/​usr/​local/​bin/​post-docker.sh
 +ExecReload=/​usr/​local/​bin/​post-docker.sh
 +RemainAfterExit=yes
 +
 +[Install]
 +WantedBy=multi-user.target
 +</​file>​
 +
 +
 +    chmod +x /​usr/​local/​bin/​post-docker.sh
 +    systemctl daemon-reload
 +    systemctl enable postdocker.service
 +
howto/sysadmin/lxd.1650364339.txt.gz · Последние изменения: 2022/04/19 13:32 — ryzhikov