LXC (LXD) контейнеры (Основы) - skench/blog GitHub Wiki

После установки lxc контейнера, нужно выполнить начальную настройку. В терминале надо выполнить команду "lxc init". Вам будут заданы вопросы. Чтобы применять настройки по умолчанию, нажимайте Enter. Важно!!! В пункте "Name of the storage backend to use (dir, btrfs, ceph, lvm, zfs) [default=zfs]:" я выбираю dir.

Команды: lxc image list images: - Показывает абсолютно все образы которые доступны для скачивания.

-- Посмотреть дополнительные параметры доступных для скачивания образов, можно следующей командой: lxc image list images:ubuntu/18.04/arm64 -cL Ниже пример того что мы увидим

       ALIASES
  ubuntu/18.04/arm64          
  ubuntu/18.04/default/arm64  
  ubuntu/bionic/arm64         
  ubuntu/bionic/default/arm64 

Все ключи lxc.image.list Столбцы сокращенных букв:

  l - самый короткий псевдоним изображения (и, возможно, число других псевдонимов)
  L - разделенный новой строкой список всех псевдонимов изображений
  f - отпечаток пальца (короткий)
  F - отпечаток пальца (длинный)
  p - является ли изображение публичным
  г - описание
  а - Архитектура
  s - размер
  u - дата загрузки
  т - тип

Команда: lxc image list images:ubuntu/18.04/arm64 --verbose есть один из параметров полезный -v , --verbose -Показать все информационные сообщения.

Ссылка на все консольные команды lxc...: https://reposcope.com/package/lxd

Команда: lxc image copy images:ubuntu/18.04/default/arm64 local: --alias=ubuntu-18.04x64 (--alias= после знака "=" указывается имя с которым мы сохраним образ на ПК где установили lxc.

Команда: lxc launch -p default ubuntu-18.04x64 test -p default тут мы говорим явно какую схему использовать нашим контейнерам для соединения с интернетом. Ниже пример как можно вносить изменения.

Команда: lxc profile edit default

config: {} | description: Default LXD profile | devices: |

  eth0:                          |
    name: eth0                   |
    nictype: bridged             | если заменить на macvlan то можно получать ip адреса от вашего
    parent: lxdbr0               | dhcp сервера, ниже надо вместо lxdbr0 указать имя вашего сетевого
    type: nic                    | интерфейса, например enp1s0.
  root:                          |
    path: /                      |
    pool: default                |
    type: disk                   |

name: default | Имя схемы. used_by: |

  /1.0/containers/test-ubuntu    | Это имена наших контейнеров, они все используют схему default, 
  /1.0/containers/python         | можно создать свою схему, и просто указать чтобы контейнеры 
  /1.0/containers/nginx          | использовали ее. Ниже будет пример, как создать такую схему. 
  /1.0/containers/golang         | Пример, отдельная сеть для проводного и  wifi. При помощи правил  
  /1.0/containers/...            | iptables можно пробрасывать порты с локального интерфейса на виртуальный. 
  /1.0/containers/...            | Примеры будут ниже, а так же  на отдельной странице в будущем.
  /1.0/containers/...            |

Примеры. Тут идет проброс с wifi интерфейса на ip адрес контейнера, после знака ":" указываем порт. iptables -t nat -A PREROUTING -i wlp1s0 -p tcp --dport 80 -j DNAT --to 10.238.253.163:80 iptables -t nat -A PREROUTING -i wlp1s0 -p udp -m udp --dport 5060 -j DNAT --to 10.238.253.83:5060

Сеть. Для начала надо узнать какие есть сетевые интерфейсы на вашем ПК. В ОС Ubuntu это можно сделать разными способами, в консоли приведу 2 примера.

Команда: ip addres или ip addr show.

Виртуальный сетевой интерфейс выглядит следующим образом "lxdbr0", теперь можем посмотреть сетевые настройки в lxc.

Команда: lxc network show lxdbr0

Мы увидим ту же структуру когда редактировали профиль "default" созданный по умолчанию. config:

  ipv4.address: 10.238.253.1/24
  ipv4.nat: "true"
  ipv6.address: fd42:e30e:9b8c:4007::1/64
  ipv6.nat: "true"

description: "" name: lxdbr0 type: bridge used_by: - /1.0/containers/test-ubuntu - /1.0/containers/python - /1.0/containers/nginx - /1.0/containers/golang - /1.0/containers/... - /1.0/containers/... - /1.0/containers/... managed: true status: Created locations: - none

Мы можем создавать собственные сети и именовать их как себе угодно Команда: lxc network create testbr0

И как было показано выше "lxc network show testbr0" посмотреть информацию о ней. Можем сами указать тот диапозон ip адресов который нам интересен выполнив Команда: lxc network create testbr0 ipv6.address=none ipv4.address=10.0.3.1/24 ipv4.nat=true

Если мы хотим уже существующий контейнер прикрепить к новой сети, выполняем Команда: lxc network attach my-container testbr0 eth0

Полезное свойство - это dhcp аренда, позволяет так же легко изменить ip адрес у контейнера Команда: lxc config device set "container_name" eth0 ipv4.address 10.0.3.123

⚠️ **GitHub.com Fallback** ⚠️