Docker

простою мовою, без припущень про ваш досвід

Docker дозволяє загорнути програму разом з усім, що їй потрібно для роботи, у чепурну самодостатню коробку, яка однаково працює на будь-якому комп’ютері. Таку коробку можна запустити за секунди, тримати кілька поруч так, щоб вони не заважали одна одній, і так само легко викинути – чи то на вашій власній машині, чи то на сервері десь далеко.

Чи бувало у вас таке, що ви ретельно, крок за кроком, виконували інструкцію зі встановлення якоїсь програми – а вона все одно ламалася в якийсь незбагненний спосіб: «у них же працює, чому не в мене?» Ця прикрість має цілком реальну причину: програма залежить від сотні дрібниць навколо себе – від певних версій, певних налаштувань, певних частин, які вже мають бути на місці, – а кожен комп’ютер трохи інший. Docker – це ліки від цього, і думка, що за ним стоїть, чудово проста.

Ідея вантажного контейнера

Доки не винайшли вантажні контейнери, завантаження корабля було хаосом: кожна річ – бочки, ящики, лантухи – мала свою форму й вимагала окремого поводження. А тоді комусь спала на думку проста річ, що змінила світ: складати усе в однакові стандартні коробки. Раптом стало байдуже, що всередині; кожна коробка однаково штабелювалася, вантажилася й мандрувала. З нею міг упоратися будь-який кран, будь-яке судно, будь-який порт.

Docker робить те саме для програм. Він бере програму і все, що їй потрібно для роботи – потрібні версії, потрібні налаштування, геть усе – і запечатує це в одну стандартну коробку, яку називають контейнером. І далі ця коробка однаково працює на будь-якому комп’ютері, бо носить увесь свій маленький світ усередині себе. Проблема «у них працює, а в мене ні» просто зникає: коробка приносить свій комп’ютер із собою.

То контейнер – це наче крихітний комп’ютер усередині мого комп’ютера?

Так, це чудовий спосіб про це думати. Контейнер поводиться як маленький, обчищений до найнеобхіднішого комп’ютер, що тихо працює всередині вашого справжнього, – зі своїми файлами та своїм невеличким ладом, відгороджений від усього іншого. Але, на відміну від справжнього другого комп’ютера, він запускається за секунди, займає зовсім мало й повністю зникає, коли ви закінчили, не лишаючи по собі жодного безладу.

Ця відгородженість – справжній дарунок: ви можете запустити кілька контейнерів водночас – скажімо, три різні проєкти, кожен з яких потребує іншого й несумісного, – і вони анітрохи не заважатимуть одне одному. Кожен живе у своїй коробці, чемно не помічаючи інших.

Чому люди по нього тягнуться

Кілька тихих переваг, коли ідея вже вклалася в голові:

  • Воно просто працює. Та сама коробка однаково працює на вашому ноутбуці, на ноутбуці вашого друга і на сервері в дата-центрі. Жодних сюрпризів із налаштуванням.
  • Це охайно. Підняли контейнер, щоб щось спробувати, – і викинули після; ваш справжній комп’ютер лишається чистим, не захаращеним напівустановленими експериментами.
  • Ніщо не стикається. Запускайте багато проєктів поруч, кожен у своїй коробці, без суперечок про версії чи налаштування.
  • Воно переїжджає. Коробка, що працює на вашій машині, так само працює на віддаленому сервері, тож переїзд проєкту з «мого ноутбука» у «живе в світі» не втрачає жодного налаштування.

Ви командуєте цими коробочками

Щоденне відчуття Docker – це запускати, переглядати й зупиняти ці коробки: чи то локально на власній машині, чи то на сервері, до якого ви дісталися через SSH. Побачити, що зараз працює, – це, наприклад, один короткий рядок:

docker ps

Він перелічує ваші запущені контейнери – наче ви окинули оком верстак, щоб побачити, які машинки гудуть. (Це безпечна команда «тільки подивитися»: вона лише повідомляє.) Запуск і зупинка коробок – так само короткі вказівки, а оскільки кожна коробка самодостатня, ви можете підняти її, скористатися нею і викинути без жодних вагань.

Ті самі команди працюють однаково – байдуже, коробки на комп’ютері просто перед вами чи на комп’ютері на іншому кінці світу. Саме тому Docker – такий зручний спосіб запускати щось на віддалених серверах: це та сама жменька команд, хай де ті коробки живуть.

Отже, одним подихом

Docker загортає програму й усе, що їй потрібно, у стандартну самодостатню коробку – контейнер, – яка однаково працює на будь-якому комп’ютері, запускається за секунди, охайно нікому не заважає і слухається кількох коротких рядків, байдуже, працює вона на вашій власній машині чи на сервері десь далеко.