UNetLab 1.0.0-12. Інтеграція з Docker і Dynamic nodes connection

Вітаю, колеги. Продовжуємо висвітлювати розробку UNetLab. У попередньому пості я розповідав про нову версію UNetLab 1.0 і анонсував запуск відео курсу. Але час йде і розробники випустили чергове значне оновлення - UNetLab 1.0.0-12. Ключові нововведення, які будуть описані в цій статті:


1) Dynamic nodes connection

2) Інтеграція з Docker

Якщо вас зацікавила дана тема, ласкаво просимо по кат.

Dynamic nodes connection

Функція, яку так чекали всі користувачі UNetLab. Нарешті стало можливим динамічне з'єднання вузлів простим кліком мишки (у відео уроці нижче показано сам процес).

Тепер немає необхідності створювати мережі в ручну. Таким чином створення топологій в UNetLab стало таким же зручним, як і в GNS3.

Якщо ви ще не встигли оновитися, то робиться це елементарно:

apt-get update

apt-get install unetlab

Інтеграція з Docker

Взагалі кажучи, реалізація Docker-а в UNL ще сирувата і вимагає серйозного доопрацювання, проте я не можу не торкнутися цієї теми, тому що вона дуже важлива. На скільки я знаю, навіть нова версія GNS3 так само має підтримку Docker-а. У цієї технології дуже великий потенціал.

Але перш ніж почати, думаю досить логічно спочатку розповісти про сам Docker. Що ж це таке? Питання не найпростіше, але я, як зазвичай, постараюся пояснити максимально просто. Описувати буду поверхово і загальними фразами, тому що даний курс не про віртуалізацію, та й я сам не вважаю себе експертом в цій області.

Отже, на сьогоднішній день можна виділити три основні види віртуалізації:

1) Повна (апаратна) віртуалізація </4 >

Цей тип віртуалізації використовують VirtualBox, VMware, KVM, QEMU тощо. Сенс полягає в повній емуляції комп'ютера з усіма апаратними засобами. У даному випадку гіпервізор розподіляє апаратні засоби між віртуальними машинами. І вже в ці віртуальні машини встановлюється Операційна система, практично як на повноцінний фізичний комп'ютер. Віртуальні машини повністю ізольовані один від одного. Апаратна віртуалізація повинна підтримуватися процесором. Багато хто напевно вже включав в біосі цю функцію. Це або Intel VT (VT-x) або AMD-V.

2) Віртуалізація рівня операційної системи

Цей тип віртуалізації використовують OpenVZ, LXC тощо. У цьому випадку вже не використовується емуляція апаратних засобів. Створюється як би копія більшості процесів вихідної операційної системи. Ці процеси ізолюються в окремий контейнер (звідси і назва - контейнерна віртуалізація). При цьому в контейнері ми отримуємо практично повноцінну операційну систему, куди можуть бути встановлені додатки. Такий підхід дає виграш у продуктивності порівняно з повною віртуалізацією, оскільки немає необхідності емулювати апаратні засоби. Взагалі є багато плюсів і мінусів використання того чи іншого типу віртуалізації, але наш урок не про це.

3) Віртуалізація програм

Це вже вищий рівень абстракції, який дозволяє ще більше економити системні ресурси. Навіщо віртуалізувати цілу операційну систему якщо нам наприклад потрібна тільки окрема база даних? Або окремий веб - сервер? Docker вирішує це питання. Він дозволяє створювати копію не всіх процесів вихідної операційної системи, а копію окремого додатку та ізолювати його в контейнер. Це дуже зручно при розробці і тестуванні. При цьому docker так само вміє віртуалізувати операційну систему, як це робить OpenVZ або LXC.

Якщо є бажання познайомитися з docker ближче, то можете скористатися цим ресурсом.

Коротко розповів, що є що. Повторюся, що я описав все дуже поверхово. Я навіть не зачіпав такі речі, як віртуалізація мережі або віртуалізація систем зберігання даних. Взагалі віртуалізація дуже цікава і велика тема. Якщо у вас є вільний час, то по можливості навчайтеся за цим напрямком, тому що без віртуалізації сьогодні вже нікуди!

А ми, тим часом, переходимо до docker-у. Хтось може запитати: «Навіщо нам docker, коли є і QEMU, і зовнішні віртуалки у вигляді VMware і той же VPCS?» Спробую відповісти.

Якщо взяти віртуалки у вигляді QEMU або VMware, то вони всім хороші, але, споживають занадто багато ресурсів (пам'ять, процесор, жорсткий диск).

Здавалося б, є VPCS, який взагалі нічого не споживає. Але у нього вельми мізерний функціонал. Немає telnet або ssh клієнта, немає tcpdump-а, немає nslookup-а і багатьох інших корисних функцій. Тобто. на даний момент ми або витрачаємо багато ресурсів, або відчуваємо проблеми з нестачею функціоналу. Docker покликаний вирішити наші проблеми. Docker дозволяє запустити практично повноцінну Linux подібну систему з досить скромними параметрами, як по оперативній пам'яті, так і по жорсткому диску. При цьому у нас величезний вибір готових контейнерів з різними дистрибутивами або додатками.

У цьому уроці ми розглянемо роботу з одним з найменших контейнерів для docker-а - BusyBox. Що це таке, можна почитати ось тут. Якщо коротко, то це дуже маленький дистрибутив, з дуже маленькими системними вимогам. Що ж, почнемо.

Для початку нам необхідно встановити docker на сервер unetlab, оскільки за замовчуванням він відсутній. Детальна інструкція є на офіційному сайті UNL в розділі howto. Не бачу сенсу дублювати тут цю інформацію.

Після встановлення можемо перейти до веб-інтерфейсу unetlab. До речі кажучи, для підключення до контейнерів використовується спеціальна утиліта docker-а. Переконайтеся, що у вашій теці C:\ Program Files\UNetLab є потрібні файли: docker.exe, docker_wrapper и win7_64bit_docker. Якщо ні, вам слід встановити новий windows integration pack.

Який же функціонал нам дає цей екстремально малий дистрибутив? Насправді досить багатий. У busybox нам доступні:

- Клієнт і сервер telnet

- Клієнт і сервер tftp

- Клієнт і сервер ftp

- HTTP сервер

- сервер DNS

- Сервер NTP

- Такі утиліти як:

— ifconfig

— ip route

— traceroute

— arp

— nslookup

— netstat

Тепер давайте зберемо простеньку схему і скористаємося доступним нам функціоналом. Припустимо, що нам у лабораторній роботі знадобилося протестувати такі сервіси як DHCP, HTTP, DNS, FTP і Telnet. Все це ми можемо зробити за допомогою Docker! Для налаштування ми будемо використовувати такі вбудовані сервіси BusyBox:

udhcpd - для сервера DHCP

httpd - для ВЕБ сервера

dnsd для сервера DNS

ftpd - для FTP сервера

telnetd - для Telnet сервера

Весь процес налаштування можна подивитися в даному уроці (дивитися з 10-ї хвилини):

Таким чином, ми підняли Telnet сервер, HTTP сервер, DHCP, FTP і DNS сервер на одному контейнері, образ якого важить всього 1 Мбайт! Вражає, правда? І ми розглянули лише один образ, а їх величезне кол-во з різним софтом всередині. Більш того, ви можете з легкістю зібрати свій власний образ з потрібним вам набором утиліт. Наш урок не про це, але якщо вам стало цікаво, то обов'язково вивчіть цю можливість.

Резюмую вищесказане: можна з упевненістю сказати, що UNetLab продовжує динамічний розвиток і стає все більш функціональним і зручним засобом для навчання.

logo