👨‍💻

👨‍💻

Про Go и всякое из мира IT

11 Jan 2021

Отзыв о курсе по Docker от Slurm

Предисловие

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

Введение

С Docker я работаю уже давно, прочел немало статей, столкнулся со многими проблемами и от курса ожидал некоторой систематизации знаний, и возможность почерпнуть что-то новое, то, чего ранее не знал.

Давайте рассмотрим сам курс. В описании нам задают ряд вопросов, ответы на которые мы должны узнать в процессе прохождения:

  • Что делать, если локально у разработчика приложение собирается нормально, а на продакшене все ломается?
  • Как разрабатывать и тестировать приложение при наличии огромного количества зависимостей?
  • Действительно ли можно запускать в Docker небезопасный код? А также разберем другие мифы и легенды о Docker.
  • Когда и кому нужно переходить на микросервисы? Мы знаем, что на практике все намного сложнее, чем об этом пишут в интернете.

Запомните их, мы к ним еще вернемся. Также авторы сразу говорят, что состоит курс из двух частей: вводной и продвинутой. Звучит очень заманчиво, особенно про небезопасный код, мифы и микросервисы (куда без них в 2021-ом 😄).

Техническая сторона

У себя на машине разворачивать ничего не нужно. По нажатию кнопочки сразу поднимается стенд, к которому подключаешься по ssh. Стенд поднимается быстро, буквально за пару минут и живет 6 часов.

Подача

👍

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

👎

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

Базовая часть

👍

Показали популярные команды. Рассказали про часто используемые флаги запуска: что означают, как использовать и комбинировать. Порадовало, что не упустили как правильно завершать работу контейнера, как изучать уже готовые образы (history, inspect). Распетктую за упоминание docker system prune.

Авторы поделились небольшими «лайфхаками» по удалению всех образов или всех остановленных контейнеров. Для тех, кто давно работает с Docker, конечно, в этом нет ничего нового и у каждого найдется пяток своих команд, но мы пока все еще в базовой части. В секции про Docker Compose рассказали, чем отличается docker-compose.yml версии 2.1 от 3.0. На примере дали пощупать healthcheck. Это круто.

👎

Внятного рассказа про основу основ, Dockerfile, не было. Что такое ENTRYPOINT и чем он отличается от CMD вы не узнаете из этой части. Также прошли мимо авторов: ENV, LABEL, USER, VOLUME, ONBUILD. Ничего не было сказано про .dockerignore, хотя представить продакшн разработку без него очень и очень сложно. Зачем-то выделили время на 12 factor app. Оно вроде бы и полезно, но слабо соотносится с Docker.

Продвинутая часть

👍

Очень круто, что хоть и не сильно углубляясь, но рассказали про cgroup, namespaces и capabilities. Выделили отдельный блок с несколькими видео про сеть в Docker, какие есть драйвера и нюансы их использования. Volume-ы тоже не обошли стороной и уделил время тонкостям работы с ними. Понравился блок про ограничение ресурсов (память, cpu), доступных для контейнера.

👎

Вскользь упомянули про оптимизацию размера Docker образов. Хотя кажется, что это непаханое поле для курса. Докладов и статей на эту тему тьма. Вот только ребята из Слёрм решили ограничить себя рассказом про схлопывание нескольких команд RUN в одну и мультистейджинг. Кстати, с мультистейджингом даже поиграть не дали, просто показали на слайде и все.

Тема Docker-In-Docker прошла вскользь. Поиграть с ней в песочнице и на пальцах пощупать как с этим работать не дали.

Не упустили из виду оптимизацию приложений на разных языках под запуск в Docker, но не без нюансов. Всего рассматривали пять языков: ruby, php, python, go, java. Мой основной язык это Go, поэтому про него и буду говорить.

Видео началось с прекрасного заявления — «Go хорошо работает в Docker, так как Docker написан на Go».

И тут я загрустил. Это настолько далеко от реальности, что даже комментировать сложно. В этот момент авторы курса потеряли весь и без того маленький кредит доверия. Но … ок, далее посоветовали, так как Go компилируемый язык, использовать FROM scratch. Знаете сколько раз упоминалось слово scratch до этого момента — ноль. А самое настораживающее то, что авторы даже не удосужились рассказать, что это значит вообще. Про то, как с таким контейнером работать DevOps-ам, наверное, даже не задумывались, когда советовали. В конце нам просто бросают слайд с Dockerfile-ом в лицо, приговаривая «ничего сложного, разберетесь». Тут я и прекратил свое прохождение курса

Выводы

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

Помните я в начале писал список вопросов, на которые курс должен ответить? Так вот про микросервисы ничего сказано не было, как и про небезопасный код, да и что делать с огромным количеством зависимостей тоже ни слова. В целом весь материал есть в открытом доступе и гуглится за меньше, чем минуту. Так что курс от Слёрм по Docker пустая трата денег. Ребятам нужно перерабатывать продвинутую часть, перезаписывать все видео или снижать стоимость.