LINUX.ORG.RU

Объясните как работать с Docker

 ,


8

6

Я прочитал статьи про то зачем нужен докер, как на нём разворачивать простейшие приложения, но всё ещё не понимаю как я могу его использовать в своём проекте.

Мой стэк — Node.js/Express/TypeScript, MongoDB, RabbitMQ, nginx. Я бы вручную установил ОС, весь стэк, конфигурацию, и общую папку (чтобы не копировать файлы). При необходимости эмулировать продакшн — создал бы ещё один контейнер. Если бы у меня была macOS, то я бы использовал VirtualBox.

Но я до сих пор не понял что мне делать в Docker. Конкретно:

  • Ой. Мой список вопросов закончился :)

Отвеченные вопросы:

  • Мой главный вопрос — что мне вообще делать с вашим докером? Работать как с виртуалкой?
    • Ответ: 1
  • Мне нужно все этапы установки, которые я выполнял при ручном создании контейнера, перенести в Dockerfile/docker-compose?
  • Зачем нужен DockerHub, если можно выбрать ОС и самому установить нужный софт?
    • Ответ: нужно понимать в чём смысл докера, тогда эти вопросы отпадают. Во многих гайдах упускают тот момент, что вы не должны создать единый образ, который содержит всё, а должны все процессы поместить в отдельные контейнеры. Например, приложение на Node.js и сервер MongoDB должны быть в разных контейнерах. В Docker это называется сервисами
  • Я в некоторых Dockerfile видел apt-install — разве это уже не означает, что образ не иммутабелен? Ведь изменится версия библиотеки в репах — изменится и в твоём образе, разве нет?
    • Ответ: 1
  • Я вижу как в очередном Dockerfile пишут FROM php:alpine-666 и чуть ниже RUN apt-install .... Это значит, что используемый образ из DockerHub — Ubuntu-based?
    • Ответ: образы в DockerHub действительно базируются на какой-то ОС. Причём не всегда очевидно на какой.

Спасибо!



Последнее исправление: elonmusk (всего исправлений: 10)

Ответ на: комментарий от i-rinat

Пока админов меньше двух

Админов всегда не менее трёх штук: админ, его предшественник и сменщик. И infrastructure as a code (частью чего может являться докер) неплохо помогает им в общении.

смысла в докере (для руководства) нет, потому что меньше одного админа оставить не получится.

При нехватке админов сервис отдают на аутсорс, а там облака, белогривые лошадки, не только докер, но и кубернетес страшный может встретиться.

ugoday ★★★★★
()
Ответ на: комментарий от byko3y

Это можно написать проще: «я не осилил».

Я написал то, что написал. Дальше уже твоё дело, как прочитать.

den73 ★★★★★
()
Ответ на: комментарий от byko3y

Нормально всё у лиспа с компиляторами.

inb4: Python по сравнению с лиспом - полное говно.

  • REPL, даже в IDLE - неюзабельный.
  • Про производительность(даже Cython) враки. Она адски низкая.
  • Синтаксис отстой. Это и пробелы, и так далее, включая стандартные настройки линтеров. Объективно, мешает как писать код, так и рефакторить. Синтаксис в целом «easy» а не «simple», и порождает огромные горы нечитаемого говнокода случись какая сложная логика.
  • Даже топовые IDE(inb4 PyCharm) - говно. И это из-за самого языка, для него сложно написать нормальное IDE по причине его излишней «динамичности» и вообще тупости.
  • Деплой это пиздец. Вот реально только в докере и развертывай.
  • Совместимость библиотек - говно, одна проблема 2vs3 че стоит, и я уж не говорю про поддержку разных вариаций питона - на PyPy, Cypthon, Jython, и прочее, никто не ориентируется, и там соответственно большая часть библиотек тупо не работает, а работают они в основном только в CPython, где тормоза, GIL, говноGC, ад и сракотан.
  • Собственно библиотеки - и вообще, экосистема - это сплошные студенческие поделки и глючное говно. От PHP недалеко ушли. Либо же что-то узкоспецифичное для какого-нибудь датассанья(которое в 99% случаев просто тупой хайп, и проедание денег). Очень сложно находить нормальные работающие и удобные библиотеки.

inb4 пишу на Python на работе и знаю о чем говорю. Девелоперы, по их словам, в целом предпочли бы писать на C# чем на Python.

Объективно, питон неплохой язык для того чтобы первокурсников учить основам алгоритмов, или же писать простенькие сайтики. Для остального ... нет, спасибо.

lovesan ★★
()
Ответ на: комментарий от anonymous

Он для Delphi/Firebird, написан для работы, никогда не выкладывался и не факт, что будет. Я уже понял, что это скаффолдинг называется в современном мире. Если найду что-то достойное из аналогов - даже не буду его дооткапывать. Думаю, должны были и другие люди подобное реализовать, т.е. даже точно знаю. Не знаю только, есть ли оно в опен-сорсе где-то.

den73 ★★★★★
()
Ответ на: комментарий от byko3y

Я уже почти хайлоад-бигдата. Присоединяйся. Будем брать 500$ в час за консультации о том, как мы стали такими крутыми.

Да мы уже сами бигдата, хоть и без клиентов пока.

urxvt ★★★★★
()
Ответ на: комментарий от ugoday

Спасибо за ответ!

Только вот этого я не понял:

Возможность, например, изолированно накатить security update на все необходимые конфигурации без изменения вышележащих слоёв.

Не могли бы вы разъяснить?

Borifed
()
Ответ на: комментарий от Borifed

Рассмотрим схему:

0. Базовый образ докера (debian, alpine) не важно. Он находится в реестре.

1. Ваш базовый образ.

FROM debian:9
RUN apt install zlib

2. Образ приложения

FROM YOURIMAGE:latest
ADD something, that relies on the zlib

Внезапно выяснилось, что с текущей версией zlib проблема. Тогда вы меняете ваш базовый образ, и пересобираете (без изменений) образ приложения. Поскольку он «наслаивается» на базовый образ с исправленной версией zlib, в приложении автоматически окажется эта версия.

Выглядит не очень впечатляюще, но представьте, что у вас более сложная иерархия с десятками образов. И внезапно исправить что-то для всех из них (возможно, кроме некоторых) это очень удобная возможность.

ugoday ★★★★★
()
Ответ на: комментарий от lovesan

REPL, даже в IDLE - неюзабельный.

А можно конкретику? Мне просто самому интересно, какой же он - правильный REPL.

Про производительность(даже Cython) враки. Она адски низкая.

А тесты свидетельствуют об обратном: производительность оптимизированного Cython сравнима с кодом на C.

Даже топовые IDE(inb4 PyCharm) - говно. И это из-за самого языка, для него сложно написать нормальное IDE по причине его излишней «динамичности» и вообще тупости.

Обычно в качестве IDE я использую текстовой редактор с подсветкой синтаксиса. И да, на проектах-миллионниках тоже такой подход использую периодически. Lisp еще более динамичен, потому трудности с интерпретацией программ возникают не только у IDE, но и у человеков. Здесь лучший вариант - это оставить интерпретацию интерпретатору.

Совместимость библиотек - говно, одна проблема 2vs3 че стоит, и я уж не говорю про поддержку разных вариаций питона - на PyPy, Cypthon, Jython, и прочее, никто не ориентируется, и там соответственно большая часть библиотек тупо не работает

PyPy ОЧЕНЬ совместим с CPython, он поддерживает интерфейс расширений CPython без изменений, хоть и отсутствие GIL может создать проблемы в работе некоторых из них. Диджанги с пирамидами спокойно работают на нем, например. Да, расширения на C придется перекомпилировать - они готовые уже лежат на репозиториях.
С Cython и Jython действительно беда, но это все-таки узкоспециализированные вещи.

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

Это проблема для многих популярных языков. У меня вот жабер-клиент Python+GTK+SQLite прекрасно работает. Причем, под виндой. Вот такое вот специализированное узкоспецифичное датассанье. Да, школоподелки публикуются, но тебя же никто не заставляет использовать их as-is.
Вот в лиспе хорошо: нет библиотек - нет проблем.

пишу на Python на работе и знаю о чем говорю. Девелоперы, по их словам, в целом предпочли бы писать на C# чем на Python.

Я тебе даже больше скажу: гугль плавно уходит на Go. Все же лютая динамичность языка - это совсем другая стихия.
А если бы ваши девелоперы писали на C#, то предпочли бы писать на питоне.

Объективно, питон неплохой язык для того чтобы первокурсников учить основам алгоритмов, или же писать простенькие сайтики. Для остального ... нет, спасибо.

Питон - это клей, которым соединяются воедино компоненты системы. Быстро, понятно, гибко, без необходимости городить абстракции для элементарных задач.

byko3y ★★★★
()
Ответ на: комментарий от Borifed

Возможность, например, изолированно накатить security update на все необходимые конфигурации без изменения вышележащих слоёв.

Не могли бы вы разъяснить?

Объясняю: те двадцать микросервисов, которые ты выполняешь на всех ваших серверах, могут сейчас работать на уязвимой/глючной библиотеке; тогда ты пересобираешь базовый образ, образы всех микросервисов, и обновляешь все микросервисы так, будто у тебя стоит одна система и ты обновил на ней эту библиотеку. Очень удобно, как видишь, экономит время, нервы, и, самое главное, деньги.

byko3y ★★★★
()
Ответ на: комментарий от byko3y

Питон довольно сильно похож на CL, исходя из того, что я знаю...

Судя по этому посту, а также этому и этому, ты не только полный ноль в лиспе, но и питон не особо знаешь.

И объяснять тебе что-либо бесполезно - слишком много апломба при отсутствии знаний.

anonymous
()
Ответ на: комментарий от ugoday

Выглядит не очень впечатляюще, но представьте, что у вас более сложная иерархия с десятками образов. И внезапно исправить что-то для всех из них (возможно, кроме некоторых) это очень удобная возможность.

Спасибо, симпатично.

Borifed
()
Ответ на: комментарий от anonymous

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

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

byko3y ★★★★
()
Ответ на: комментарий от lovesan

inb4 пишу на Python на работе

Не западло? Лучше уж на пятой перловке.

Hertz ★★★★★
()

Я прочитал статьи про то зачем нужен докер, как на нём разворачивать простейшие приложения, но всё ещё не понимаю как я могу его использовать в своём проекте.
Зачем нужен DockerHub, если можно выбрать ОС и самому установить нужный софт?

На меня нашло прозрение, два явления в жизни внезапно обрели логическую взаимосвязь и расширили взгляд на оба. Докер - это развод, подобный блокчейну. Вам не нужен блокчейн, вы им бы никогда не воспользовались, если бы добрые люди не подошли и не рассказали, что блокчейн - это решение всех ваших проблем и отличный способ зарабатывать, и они вам в этом помогут.
Интересное наблюдение:
- люди, пропагандирующие докер, обычно слабо разбираются в устройстве линукса, равно как «блокчейн-эксперты» не разбираются в криптографии и кодинге;
- люди, пропагандирующие докер, серьезно вложились в его изучение, как впариватели блокчейнов вложились в майнинг/пиар/просто изучение технологий блокчейна.
Вы думаете, что они здесь дают вам советы, вы думаете, что они обсуждают преимущества и недостатки, а они на самом деле просто создают у вас спрос, чтобы потом реализовать его своим предложением. Как и у блокчейновых воротил, у них есть как минимум подсознательный страх, что завтра те, кого они сейчас разводят, внезапно прозреют, и тогда адепт докера/блокчейна останется не у дел.
Я долго не мог понять, почему адепты докера в упор не признают проблем докера и буквально везде видят острую необходимость его использовать, как серебрянную пулю. «У вас может быть несколько версий софта... У вас может и будет одна версия софта, но системы-то могут быть разными... У вас не бывает нескольких систем, но у вас когда-то может возникнуть необходимость перенести софт на другие системы, и тогда ваши затраты на меня окупятся сполна». Или вот это разговор: «да, докер stateless, но в нем несложно сделать statefull сервисы, и крутить на них БД - я могу недорого вам настроить такую систему... нет, ничего страшного в том, что докер создаст больше проблем с БД, чем их решит - я легко смогу справиться с любыми проблемами за скромную плату». Вот, я наконец нашел причину этому странному поведению.
Источники вдохновления:
https://news.ycombinator.com/item?id=17175479
Will Kubernetes Collapse Under the Weight of Its Complexity?

byko3y ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.