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

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


howto:sysadmin:lxd

Различия

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

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

Следующая версия
Предыдущая версия
howto:sysadmin:lxd [2022/04/19 13:31]
ryzhikov создано
howto:sysadmin:lxd [2024/12/21 03:57] (текущий)
Строка 1: Строка 1:
 ====== LXD ====== ====== LXD ======
  
-Информация о контейнере и список снапшотов:​ +<code bash> 
-   ​lxc info <​containername>​+Информация о контейнере и список снапшотов:​ 
 +lxc info <​containername>​
  
-Сделать снапшот контейнера:​ +Сделать снапшот контейнера:​ 
-   ​lxc snapshot <​containername>​ <​snapshotname>​ +lxc snapshot <​containername>​ <​snapshotname>​ 
-   ​+ 
 +# Стартовать контейнер:​ 
 +lxc start <​containername>​ 
 +</​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.1650364307.txt.gz · Последние изменения: 2022/04/19 13:31 — ryzhikov