====== LXD ====== # Информация о контейнере и список снапшотов: lxc info # Сделать снапшот контейнера: lxc snapshot # Стартовать контейнер: lxc start ===== Монтирование директорий по NFS ===== С этим сложности. В непривилегированных контейнерах не получится монтировать что-то по NFS. Решение: примонтировать по NFS в на LXD-хосте, а затем подключить примонтированную директорию к контейнеру в качестве диска. :!: В LXD обнаружился занятный баг: если подключенную диреткорию не удается примонтировать по NFS, то контейнер не сможет стартовать. Установка опции required диска в false не поможет. Чтобы контейнер смог стартовать, директория должна либо отсутствовать, либо быть примонтирована без ошибок. Поэтому automount работать не будет, и вместо него нужно использовать autofs: daqserv1 -fstype=nfs4,soft,rsize=131072,wsize=32768 daqserv1:/data devices: daqserv1: path: /daqserv1/ required: "false" source: /nfsmounts/daqserv1/ type: disk ===== Проблемы с 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 и добавлять нужные правила: #!/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" [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 chmod +x /usr/local/bin/post-docker.sh systemctl daemon-reload systemctl enable postdocker.service