Отзыв о курсе по Docker от Slurm
слерм docker отзывПредисловие
Прошел я курс не на 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».FROM scratch
. Знаете сколько раз упоминалось слово scratch
до этого момента — ноль. А самое настораживающее то, что авторы даже не удосужились рассказать, что это значит вообще. Про то, как с таким контейнером работать DevOps-ам, наверное, даже не задумывались, когда советовали. В конце нам просто бросают слайд с Dockerfile-ом в лицо, приговаривая «ничего сложного, разберетесь». Тут я и прекратил свое прохождение курса
Выводы
Базовая часть мне более или менее понравилась. Для себя я ничего нового не вынес, но если смотреть глазами новичка, то программа структурирована неплохо, есть практика, где можно потыкать палочкой и поиграться. Продвинутая часть, показалось недоделанной, склеенной на коленке.
Помните я в начале писал список вопросов, на которые курс должен ответить? Так вот про микросервисы ничего сказано не было, как и про небезопасный код, да и что делать с огромным количеством зависимостей тоже ни слова. В целом весь материал есть в открытом доступе и гуглится за меньше, чем минуту. Так что курс от Слёрм по Docker пустая трата денег. Ребятам нужно перерабатывать продвинутую часть, перезаписывать все видео или снижать стоимость.