Это старая версия документа!
# Информация о контейнере и список снапшотов: lxc info <containername> # Сделать снапшот контейнера: lxc snapshot <containername> <snapshotname> # Стартовать контейнер: lxc start <containername>
С этим сложности. В непривилегированных контейнерах не получится монтировать что-то по 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 перезаписывает правила фаервола (баг https://github.com/docker/for-linux/issues/103, который разработчики пока не починили). После перезагрузки новые правила фаервола заблокировали связь контейнеров 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