Допоможіть розібратися в чому суть Docker

Доброго дня. Я ознайомився із офіційним сайтом сервісу Docker: docs.docker.com/get-started .

1. Мені не зовсім зрозуміло, в яких випадках краще застосовувати цей сервіс?

2. Чи потрібен інтернет для роботи із контейнерами створеними на основі цього сервісу?

3. Чи підійде цей проект для спрощення розгортання проекту, створеного на VB6 для Windows?

4. Чи підійде цей проект для розгортання проекту на С++, який використовує Cmake та багато бібліотек — ну ви розумієте, щоб скомпілювати проект потрібно завантажити і скомпілювати залежності, а також залежності для залежностей

👍ПодобаєтьсяСподобалось1
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
1. Мені не зовсім зрозуміло, в яких випадках краще застосовувати цей сервіс?

2. Чи потрібен інтернет для роботи із контейнерами створеними на основі цього сервісу?

3. Чи підійде цей проект для спрощення розгортання проекту, створеного на VB6 для Windows?

4. Чи підійде цей проект для розгортання проекту на С++, який використовує Cmake та багато бібліотек — ну ви розумієте, щоб скомпілювати проект потрібно завантажити і скомпілювати залежності, а також залежності для залежностей

Розповім по пунктах, тому що на наших тренінгах IT-Discovery дуже часто використовується Docker і у нас дуже багато хорошого фідбека про нього.

1. Docker — це не зовсім сервіс, це платформа для запуску додатків та сервісів у легковажних (на відміну від VMWare) контейнерах.
Простий приклад. Тобі потрібно відкомпілювати і зібрати програму, написану наприклад на Java. Тобі для цього потрібно мати Java компілятор і віртуальну машину Java (JVM). Причому певної версії. А якщо ти маєш кілька проектів, які використовують різні версії, то потрібно встановити їх усі. Натомість ви берете JVM і створюєте образ (image) на основі однієї з операційних систем (Windows або Linux, без різниці). Потім ви завантажуєте образ з Docker Hub (він безкоштовний) локально, запускаєте контейнер на базі цього образу і можете тепер компілювати і запускати будь-які програми без необхідності встановлювати локально.

2.Ні, потрібен лише встановлений локально Docker. Але якщо немає Інтернету як ви завантажуватимете (збиратимете) цей образ? Вам доведеться його зібрати на машині, де є Інтернет, потім експортувати його до файлового архіву та перенести на комп’ютер, де немає Інтернету.

3.Якщо це програма з GUI — то не впевнений. Docker в першу чергу зручний для запуску серверних додаткiв, коли ви можете використовувати консоль (командний рядок). Боюся, що вам доведеться помучитися та розбиратися самостійно. Я ніколи так не робив.

4. Так можна. Ви просто пишете свій Dockerfile, де вказуєте, що і як викачувати та запускати. А потім збираєте цей образ.

2. Чи потрібен інтернет для роботи із контейнерами створеними на основі цього сервісу?

Там є система контролю версій, схожа на гіт, вся взаємодія зазвичай відбувається через неї. Не обов’язково юзати докерхаб, можно розгорнути свою. Також ти можеш і створити локальний тарбол stackoverflow.com/...​thout-connect-to-internet

3. Чи підійде цей проект для спрощення розгортання проекту, створеного на VB6 для Windows?

Існують офіційні віндовс-імеджі від майкрософт. Можно створити контейнер на їх основі. Але запускати такий контейнер можно буде тільки на Windows серверах. Бо докер то ізольований сендбокс, а не віртуальна машина.

4. Чи підійде цей проект для розгортання проекту на С++, який використовує Cmake та багато бібліотек — ну ви розумієте, щоб скомпілювати проект потрібно завантажити і скомпілювати залежності, а також залежності для залежностей

Так, тобі треба буде описати цей весь сценарій у dockerfile на основі імеджів від майкрософт.

Суть докера в том, что это легковесная виртуальная машина. Как результат — потребляет гораздо меньше ресурсов для того же набора задач, и гораздо быстрее разворачивается.
Все остальные преимущества и качества это уже производные от этих двух.

Суть докера для тебя как программиста в том, что это де-факто стандарт в современной веб-разработке, и требования из разряда умения пользоваться гитом, джирой, знать что такое скрам или рест-апи.
Все это может не использоваться на твоем текущем проекте, но как только захочешь сменить работу будешь сильно ограничен в выборе по требованиям.

Суть докера в том, что это легковесная виртуальная машина.

Скоріше ізольований сендбокс. Наприклад, ви не зможете запустити докерімедж вінди під ніксами. Хоча навпаки можна — через наявність WSL.

Это уже узкоспецифические детали. Конечно контейнер не является полноценной виртуальной машиной и зависит от хостовой операционки. Важно для чего раньше использовались виртуалки и какие проблемы при этом возникали, которые решились с помощью контейнеризации.

По пункту 4 — ТАК!!!! І ЦЕ МАЙЖЕ ОБОВЬЯЗКОВО!
Колись працював над AI проектом одним на Python, але який використовує дуже багато сішних бібліотек і ще треба щоб збіглась сумістність версій різних бібліотек версій драйверів, версії ОС та положення зірок та галактик у всесвіті.
Коротше там стільки ньюансів що інструкція по деплойменту якщо розгортати на звичайній голій віртуальці займе більше ніж об’єм коду. А тут я описав усі ці залежності в одному «компактному» докерфайлі рядків на 200.
Так колись я з докером і познайомився і більше не можу без нього жити! Спробуй щось у докері розгорнути і ти побачиш його переваги. Потім перейдеш вже на Docker Compose і врешті k8s/helm і т/д
По пункту 3 — Docker це засіб для контернізації середовищ для серверних додатків. І переважно Linux. Це доречі до питання 1. Ще гарно підходить для розгортання різних сервісів для дев оточень. Наприклад захочу я у себе на макбуку мати Postgres. Але у системі його не хочу мати — загадить тут все. Тимпаче мені потрібні різні постгреси для різних проектів. Я і розгортаю це все одною командою у контейнері. Це простіше ніж інсталювати інсталятором
По пункту 2 — для розгортання контейнерів так потрібен інтернет — вони ж тягнуться з інтернету (потім локально кешується це все). Для роботи контейнеру — залежить від того що там. До інтернету із контейнера достучатися можна.

на моей машине все работает, вот твою машину мы и заделиверим

Докер вбив відмазку — «але у мене на машині усе компілилось» :-)

на моей машине все работает, вот твою машину мы и заделиверим

это на самом деле описание не докера, а апплайенса в виде виртуальной машины

в случае с докером — все абсолютно по другому
— на моей машине в докере работает
— подождите-подождите, а как же деплой в K8S, масштабирование, HA и вот это вот все?
— на моей машине в докере работает

K8S то окрема велика тема, ми тут обговорюємо суто докер. Буде неправильно змішувати ці поняття.

Бот набивает себе сообщений, перед тем как начать копипастить свои темники.
Зачем на это вестись?

Спробувати для себе визначити рівень, наскільки сам розумієш цю тему.

в чому суть Docker

Kubernetes на мінімалках

Вся суть Докера — в контейнерах. Контейнер — это изолированная виртуальная машина, в которую ты можешь легко завернуть всё что угодно — веб-приложение, сайт, апишку, сервис, базу данных, инстансы чего угодно (Redis, RabbitMQ, MSSQL и т. д.). Что это даёт:
— Полная независимость от внешней среды выполнения. Ты просто можешь переносить контейнер одним файлом с места на место между разными серверами и хостингами. Тебе не нужно париться, поддерживает ли новый хостинг MySql или ещё какую технологию, которую ты используешь. Тебе просто нужна поддержка самого докера.
— Так как контейнер полностью независимый, ты можешь масштабировать архитектуру, просто добавляя новые инстансы.

Для десктопа Докер не используют, технология предназначена чисто для server-side

В школі реферат попросили?

Ні, просто цікаво, чи можу я використовувати цей сервіс в роботі

Можеш, якшо айтішники палки в колеса не сучать

1.Докер — ізольований енв зі всіма залежностями, включаючи бази даних і тд, де запускається ваш проект (для роботи з ним необхідно створити докерфайл або docker-compose). Його комерційно доцільно використовувати майже всюди, наприклад в умовах ринку вам може бути вигідніше хостити проект в іншого провайдера, то перенести його — це просто розгорнути там ваш контейнер, без ніяких змін у коді,конфігах і тд. Якщо ви тільки починаєте розбиратись у якомусь напрямку, не бачу сенсу заморочуватись з цим, коли відчуєте потребу (розгорнувши вашу апку кілька разів вручну і захочете це автоматизувати) — прийде розуміння навіщо воно потрібне.
2. Трохи дивне питання, якщо у вас завантажені всі необхідні залежності і ви наприклад створюєте веб-апку, то достатньо просто прописавши порт в докерфайлі і заранивши докер, можете через localhost доступитись до вашого проекту. Переважно завжди потрібно деплоїти контейнер на якийсь сервіс (heroku,aws, whatever), то так для цього потрібен інтернет, але це не стосується ніяк самого докеру.
4. Де ви хочете розгортати проект і чи сам проект містить щось окрім С++ коду? Якщо задача локально його запустити — то це чудово вирішить .sh скрипт.
3. Докер — це переважно лінукс контейнери, але майкрософт здається і для вінди щось робив, треба гуглити, можливо тут вам .net деви підкажуть.

В мене переважно десктоп проекти, для Windows.

3. Докер — це переважно лінукс контейнери, але майкрософт здається і для вінди щось робив, треба гуглити, можливо тут вам .net деви підкажуть.

.NET Core и .NET 5/6 в линукс-контейнере работают как часы

те відчуття коли типу доку почитав, але не всю почитав, і побіг на доу новий топік робить..

просто людина не встигла в п’ятницю тему запилити

Підписатись на коментарі