Обновить

Что у вас спросят про Docker на интервью? Разбираем 10 главных вопросов

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели24K
Всего голосов 37: ↑29 и ↓8+23
Комментарии23

Комментарии 23

TLDR: Запускали ли вы хоть раз Докер?

кнш)

Скачал я значит себе книжку по докеру. Пропускаю все длинные вступления благодарности и тп и на дцать какой то странице почти дословно: представьте что докер это виртуальная машина...

Мне кажется, первое про что надо спрашивать на интервью это:

  • границы применимости докера?

  • в чем отличие докера от подмана?

  • контейнер упал, где логи Лебовски?

... и вот тут сразу все становится понятно с кандидатом

  1. Даёт удобство развёртывания в обмен на жертву некоторой степени производительности, безопасноcти и необходимости поддерживать доп. инструмент. В какую сторону и насколько склоняться - вопрос конкретного проекта. It depends.

  2. Хз никогда не работал с подманом.

  3. Где прописали, там и будут) или это вопрос на знание команды docker logs и подобных?

  1. Границы применимости это вопрос не только (и не сколько) про когда надо - про это любой маркетолог с тремя классами школы расскажет. Границы применимости это вопрос про то когда НЕ надо использовать инструмент, в каких кейсах и почему. SQL в докере - норм? Asterisk (условный) почему нельзя? Вот вы тоже пишете зависит от проекта - как понять контеризируемый это проект или нет?

  2. А это вопрос не про работал/не работал, у подмана на главной написано основное отличие. Там правда одно слово, но под ним фундаментальное отличие

  3. это вопрос про траблшутинг. Запустить проект любой домохозяйка джун может. А вот когда на проде все внезапно умерло или бесконечно рестартится или и то и другое одновременно

2. Open Source?

другое слово. Не "r" начинается, на "less" заканчивается

Rootless? Хорошее свойство.

Скрытый текст

Ещё одно слово на главной написано, на "r" начинается, на "less" заканчивается — «regardless», но оно сюда не очень подходит.

Rootless

Бинго, естественно в рамках данного вопроса стоит обсудить актуальность угрозы и ту же применимость (а то мало ли все надумано)

и?

1) А что не "норм" с SQL и Asterisk в docker? Если конечно понимать для чего. И если учитывать особенности. Например для тестов и временной разработки/отладки.

Если конечно понимать для чего.

Я на собесе и жду примерно такого ответа(только развернутого). Вот это тестировать норм, вот это нет смысла, вот то если bare metal'а нет, но на свой страх и риск, а вот тут мы не можем потому что...Ну и как я писал выше, меня в первую очередь интересует когда НЕ можем. Начиная от модифицированных ядер и приложений критичным к реальному времени (всякое связанное с ОСРВН) и железу, заканчивая rootless(плавный переход к вопросу 3)

SQL в докере - норм?

норм, а какие проблемы ?

И как, sql в докере норм или не норм?

Очень надеюсь, что люди которые готовятся к собеседованию, прочитав этот поверхностный нейрослоп, все же зайдут в официальную документацию и прочитают более детально про все нюансы: и наглядную табличку про взаимодействие CMD и ENTRYPOINT, и про такую базовую штуку как билд-кэш, про котороую ваша нейросеть забыла упомянуть, и про то что runtime secrets работают не только в Swarm, а еще и в Compose, и про то, что secrets бывают, вообще-то, не только runtime но еще и build-time, точно также как и переменные среды и многое другое...

А зачем?

Чтобы на собеседованиях отвечать, очевидно же.
Может даже когда-нибудь в своей жизни использовать.

НЛО прилетело и опубликовало эту надпись здесь
  1. Зачем запаковывать в контейнер java и go аппы?

затем же, зачем и любые другие приложения написанные на других ЯП

k8s вы сами поднимать будете?

можно и EKS/GKE, но ценник приятно удивит

а если оно упадёт, за сколько поднимете?

зависит от зп

Исторический контраргумент напрашивается сам.

От создателей «выучи Kubernetes за 5 минут» и «Docker — это просто виртуалка, только легче». Слышу этот разбор вопросов каждые 2-3 года, только темы чуть меняются. В 2019 спрашивали про namespace и cgroups — сейчас то же самое. Знание архитектуры не устаревает, зато «вызубренные флаги» протухают за полгода.

стоит использовать alpine (весит около 5 МБ) или distroless образы. Они содержат только самый минимум, необходимый для работы.

не стоит, по крайней мере так голословно, там не glibc, а musl может выстрелить в ногу в самый неподходящий момент

Использование легковесных базовых образов: Вместо полновесных ОС вроде ubuntu или centos (весят сотни мегабайт)

ubuntu 22.04 весит всего 70 Mб

Легковесность: Из-за отсутствия собственной ОС контейнеры «весят» мегабайты, а не гигабайты, и позволяют разместить на одном сервере в разы больше запущенных экземпляров приложений

ну да ну да, а ресурсы откуда брать ? Запусти в разы больше java приложений, каждое из которых кушает 20 Gb памяти ))

ENTRYPOINT невозможно просто так переопределить

а разве флаг `--entrypoint` это не самое простое переопределение ?

host: Полностью отключает сетевую изоляцию между контейнером и хост-машиной. Контейнер использует сетевые интерфейсы самого сервера. 

но не доступен на MacOS

Пример: RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*

а потом слышим крики - а у меня локально работает/не работает. Ваш докер г@вно

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации