📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

99% of Developers Don’t Get Docker

David Ondrej10:09

Transcription

Итак, 99% разработчиков на самом деле не понимают Docker. Теперь, если вы достаточно долго находитесь в области ИИ, вы, вероятно, слышали термин Docker, но большинство людей понятия не имеют, что делает Docker или что это такое на самом деле. В этом видео я четко объясню концепцию Docker и почему каждый разработчик ИИ должен его использовать. Очень быстро, я нанимаю второго видеоредактора. Так что, если вы знаете кого-то или сами являетесь редактором, обязательно подайте заявку. Ссылка будет под видео. Итак, вот основы. Docker позволяет упаковать приложение и все его зависимости в один переносимый контейнер. Это решает явную проблему, гарантируя, что все, что вы создаете, будь то ИИ-агент или ваш ИИ SaaS, работает одинаково на каждой машине. Таким образом, для ИИ-агентов этот контейнер может включать ваш файл requirements.txt, вашу среду Python, библиотеки, инструменты, все, что еще нужно вашему агенту. Проще говоря, Docker — это окончательное решение проблемы «у меня работает». И это потому, что при разработке программного обеспечения даже крошечное изменение версии может сломать все приложение. Например, ваш ИИ-движок работает локально, но на сервере с другой версией Python или CUDA он не работает. Это особенно болезненно при работе в команде, где пропуск Docker может означать постоянные ошибки настройки, медленное введение в курс дела и хрупкие развертывания. Теперь, поскольку Docker решает реальную болезненную проблему для разработчиков, его выручка демонстрирует экспоненциальный рост. И вы можете видеть, что чем больше становится компания, тем вероятнее она примет Docker. Вот основные технологии, работающие поверх Docker. Номер один, Gins, номер два, Reddius, и номер три, Postgress. Теперь причина, по которой все эти успешные проекты используют Docker, заключается в том, что он упаковывает все. Таким образом, после его настройки ваше приложение будет работать одинаково на любой машине, на которой установлен Docker. Таким образом, вы можете запускать несколько проектов с конфликтующими требованиями бок о бок, не давая им прерывать и мешать друг другу. Вы также можете запускать десятки идентичных копий на нескольких серверах, что, очевидно, отлично подходит для масштабирования. Теперь первое понятие, которое вы должны понять, — это образ Docker. Образ Docker — это пакет только для чтения со всем необходимым для запуска вашего приложения. Это может быть среда выполнения кода, все зависимости, все, что требуется для запуска вашей программы. Это шаблон, который Docker использует для создания и запуска контейнеров. И не волнуйтесь, я объясню концепцию контейнеров чуть позже. Образы Docker можно совместно использовать и загружать, например, на Docker Hub. Так что вам не придется вручную перестраивать среды. Вот некоторые из наиболее полезных команд при управлении образами Docker. Но благодаря LLM нам действительно не нужно их запоминать. Так что не стесняйтесь сделать скриншот этого или просто спросить LLM в следующий раз, когда вам понадобится одна из них. Второе понятие, которое вы должны понять, — это Dockerfile. Это текстовый файл, содержащий пошаговые инструкции для сборки образа Docker. Каждая строка в Dockerfile, как вы можете видеть здесь пример, выполняет определенное действие, такое как установка программного обеспечения, копирование файлов или настройка переменных среды. Затем Docker читает эти инструкции сверху вниз и автоматически выполняет их для создания вашего окончательного образа Docker. Теперь третье и самое известное понятие, которое вы должны понять, — это контейнер. Верно? Именно этим славится Docker. Контейнер Docker — это запущенный экземпляр образа Docker, который выполняет ваше приложение в изолированной среде. У него есть своя файловая система, сетевая конфигурация и процессы, но он разделяет ядро операционной системы хост-машины, и это позволяет эффективно масштабироваться. Вот наиболее полезные команды для управления контейнерами Docker. Но самая важная команда — docker compose. Это инструмент, который позволяет определять и запускать несколько контейнеров Docker вместе из одного YAML-файла. Так что вместо того, чтобы запускать контейнеры по одному, что для более сложных проектов может занять минуты. Все, что вам нужно сделать, это просто написать один файл docker-compose.yaml и затем выполнить одну команду терминала docker-compose up, чтобы запустить все ваше приложение и все микросервисы, все зависимости, все серверы, которые вам нужны для работы вашего приложения. Например, это позволяет поместить весь ваш стек ИИ в одну команду терминала. Так что бэкэнд, фронтенд-сервисы, любые внешние отдельные ИИ-агенты, все, что есть в вашем приложении ИИ. Теперь, благодаря Docker, масштабирование — это легко. Это потому, что вы можете запускать несколько идентичных контейнеров Docker на многих серверах для обработки большего трафика. Так что, когда спрос растет, например, когда ваше приложение становится вирусным в Twitter, вы можете быстро запустить больше контейнеров и отключить их, когда трафик снизится. Теперь существуют инструменты оркестрации для автоматического управления масштабированием, распределения входящих запросов по всем запущенным контейнерам, чтобы вам не приходилось сидеть и управлять, знаете ли, десятками контейнеров Docker самостоятельно. Пожалуй, самый известный из них — Kubernetes. Это инструмент оркестрации, который управляет множеством контейнеров, не обязательно Docker, на множестве серверов автоматически. Вот почему Kubernetes имеет репутацию сложного, и почему многие начинающие инженеры его боятся. Но он обеспечивает реальную ценность, потому что решает проблему ручного управления большим количеством контейнеров путем автоматического развертывания, масштабирования и балансировки нагрузки. Так что, если контейнер выходит из строя или сервер терпит неудачу, он автоматически перезапускает контейнеры, чтобы ваше приложение продолжало работать. Теперь, если мы посмотрим на долю рынка Docker и Kubernetes, вы можете увидеть, что это явная монополия, верно? Сам Docker занимает 88% доли рынка, когда речь идет о контейнеризации. И если добавить к этому Kubernetes, мы получаем около 97% или что-то сумасшедшее, верно? Это означает, что если вы досмотрите до конца и действительно изучите Docker, вам не придется беспокоиться об изучении каких-либо других инструментов. Это все, что вам нужно. Так что будьте внимательны. Теперь вы можете подумать: «Хорошо, Дэвид, но почему бы просто не использовать виртуальную машину, верно? В чем вообще разница?» В то время как виртуальные машины запускают полную операционную систему, которая требует гигабайтов дискового пространства и памяти, все это не бесплатно. Docker, с другой стороны, разделяет ресурсы сервера и упаковывает только приложение, что делает контейнеры Docker намного более легкими. Гораздо проще запустить одно и то же приложение в разных средах с помощью контейнеров, чем управлять несколькими виртуальными машинами. Это подводит нас к ИИ-агентам. Учитывая все, о чем мы только что говорили, нетрудно понять, почему Docker полезен для ИИ. Он позволяет упаковать все необходимое для запуска или тонкой настройки моделей ИИ на вашем локальном компьютере. И он изолирует каждого ИИ-агента в его собственный контейнер, предотвращая конфликты при запуске нескольких ИИ-агентов. Хорошо, давайте я покажу вам, как создать свой собственный образ Docker. И это на самом деле очень просто. Это самый простой способ начать работать с Docker. Это займет пару минут, и вы преодолеете большую часть препятствий. Так что просто следуйте тому, что я собираюсь сделать. Прежде всего, откройте новый терминал. И кстати, вы можете использовать любой IDE, VS Code, Cursor, Windsf, что угодно. Верно? Итак, откройте терминал и создайте новую папку. Мы можем сделать это, набрав `mkdir`, что означает «создать каталог», а затем имя папки `hello-docker`. Бум, папка создана, как вы можете видеть справа. Вот она. Сейчас она пуста. Так что нам нужно перейти в эту папку, aka открыть ее. Так что `cd h e`. А затем мы можем нажать Tab, чтобы дополнить имя. Вот так. Enter. И вы можете видеть, что мы сейчас находимся внутри папки. Прекрасно. Давайте наберем `clear`, чтобы сбросить наш терминал. И следующий шаг — создать файл Python. Так что внутри папки, давайте нажмем «новый файл». И кстати, вы можете сделать это либо вручную в IDE, либо с помощью терминала. Я назову его `app.py`. Бум. И внутри этого файла мы сделаем одно оператор печати. `print("hello docker")`. Это мое первое изображение, самый простой файл Python, который можно себе представить. Так что убедитесь, что вы сохранили его с помощью Command S или Control S, если вы на Windows. И далее, давайте создадим Dockerfile. Это еще один файл внутри нашей папки. Так что, щелкните правой кнопкой мыши, «новый файл» и просто назовите его `Dockerfile`. Без расширения, ничего после него, без пробелов, просто `Dockerfile` с большой буквы D. И внутри этого файла мы хотим вставить набор инструкций. Хорошо, давайте объясним, что делает каждая из этих строк. Первая строка указывает Docker, какой образ он должен использовать. Итак, в этом случае мы будем использовать легкую версию Python 3.12 в качестве базового образа, и это дает нам предварительно установленные Linux и Python. Вторая строка устанавливает рабочую директорию внутри контейнера в `/app`. Так что все команды после нее будут выполняться в этой директории. Третья строка в этом Dockerfile копирует ваш локальный `app.py`, этот очень простой скрипт Python, в текущую директорию контейнера. Так что это папка `/app`. И последняя строка в Dockerfile определяет команду по умолчанию. Так что, когда контейнер запускается, какая первая команда он должен выполнить? И в этом случае это `run python app.py`. Это буквально эквивалент того, как вы открываете терминал и сами вводите это в терминал. Так что после настройки Dockerfile убедитесь, что вы его сохранили. И следующий шаг — сборка образа, которую мы можем сделать с помощью этой команды терминала прямо здесь. Так что давайте откроем терминал и наберем `docker build -t hello-docker .`, что означает все, и нажмем Enter. Теперь, как вы можете видеть, я получил ошибку, и причина проста. У меня не запущен Docker. Так что наберите `docker`, если у вас установлен Docker Desktop. Он просто откроет ваш Docker Desktop. Если у вас его нет, наберите `docker desktop` в Google, нажмите на первую ссылку и просто нажмите «скачать Docker Desktop». Это совершенно бесплатно. Вам не нужен платный план. Это больше для компаний и предприятий. Теперь вот как выглядит Docker Desktop. Это приятное простое приложение, которое позволяет вам работать с Docker с графическим интерфейсом. Так что вам не нужно запоминать все команды терминала. Если у вас установлен Docker Desktop, вы можете очень легко управлять своими образами и контейнерами. Теперь причина, по которой я получил ошибку, заключается в том, что Docker Desktop не был запущен. Так что, если мы снова выполним эту команду сейчас, ошибки не будет. И вы можете видеть, что наш образ собирается. Cursor, который я использую, пытается получить разрешение на доступ к Docker Desktop. Так что мне нужно разрешить это. И вот так вы начали создавать свой первый образ Docker. И вот он. Через 20 секунд, или даже меньше, 15 секунд, ваш образ был собран. Так что давайте наберем `clear`, чтобы сбросить терминал. И все, что осталось, — это запустить контейнер. Так что снова откройте терминал и давайте сделаем `docker run hello-docker`. Нажмите Enter, и бум. Вот выполнение скрипта Python, который в данном случае является простым оператором печати, но он выполнился не в терминале. Он выполнился в контейнере Docker. И это, дамы и господа, вся идея Docker. Вы можете упаковать всю свою программу со всеми зависимостями, всеми средами Python, версиями, пакетами, библиотеками, всем, что ей нужно, в один удобный контейнер Docker, который можно совместно использовать и развертывать на миллионах устройств по всему миру. Его можно распространять людям с совершенно другими компьютерами, чем у вас, и он все равно будет работать. Это Docker. Надеюсь, это видео было для вас полезным. Если вы хотите, чтобы я делал более подробные технические и обучающие видео, подобные этому, оставьте комментарий ниже и обязательно подпишитесь. С учетом сказанного, спасибо вам за просмотр и желаю вам чудесной продуктивной недели. До свидания.