Библиотека собеса по DevOps | вопросы с собеседований
3.07K subscribers
121 photos
4 videos
2 files
154 links
Вопросы с собеседований по DevOps и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/d7e18893

Работать у нас: https://job.proglib.io/

Наши каналы: https://yangx.top/proglibrary/9197
加入频道
Что такое CNM?

CNM или Container Network Model — описание, формально определяющее шаги, требуемые для предоставления сети контейнерам, где обслуживающая абстракция применяется для поддержки нескольких сетевых драйверов. CNM основан на трех компонентах: sandbox (песочница), оконечная точка и сеть.
Поясните разницу между docker run и docker create

Основное различие между этими двумя командами заключается в том, что вторая создаст контейнер в остановленном состоянии. Кроме того, docker create может быть использована для сохранения и вывода идентификатора контейнера для последующего использования. Рекомендуется использовать docker run с опцией --cidfile FILENAME, чтобы избежать перезаписи файла при повторном запуске.
Опишите Registry подробнее

Docker Registry используется для сохранения образов Docker. Существует два общедоступных сервиса хранения: Docker Hub и Docker Cloud. Docker Hub является наиболее важной общедоступной системой хранения образов контейнеров, которую полностью поддерживают многие разработчики и другие участники сообщества.
Опишите составные части архитектуры Docker

Основные составные части архитектуры Docker — это:

✍🏻 сервер, содержит сервис Docker, образы и контейнеры. Сервис связывается с Registry, образы — метаданные приложений, запускаемых в контейнерах Docker.
✍🏻 клиент, применяется для запуска различных действий на сервере Docker.
✍🏻 registry, используется для хранения образов. Есть публичные, доступные каждому, например, Docker Hub и Docker Cloud.
Расскажите кратко о жизненном цикле контейнера Docker

Жизненный цикл контейнера:

✍🏻 Создание контейнера
✍🏻 Работа контейнера
✍🏻 Приостановка контейнера
✍🏻 Возобновление работы контейнера
✍🏻 Запуск контейнера
✍🏻 Остановка контейнера
✍🏻 Перезапуск контейнера
✍🏻 Принудительная остановка контейнера
✍🏻 Удаление контейнера
Назовите наиболее важные команды Docker

✍🏻 build, сборка образа для Docker
✍🏻 create, создание нового контейнера
✍🏻 kill. принудительная остановка контейнера
✍🏻 dockerd, запуск сервиса Docker
✍🏻 commit, создание нового образа из изменений в контейнере
Какие сети доступны по умолчанию в Docker?

По умолчанию есть:

bridge, сеть, к которой подключаются контейнеры, если не указано иначе.
none, сетевой стек без наличия сетевого интерфейса в контейнере.
host, подключение к сетевому стеку сервера.
🗿🔨 Как мы разбили монолит на маленькие кусочки и что из этого вышло

В этой статье мы поделимся своим опытом миграции, расскажем о преимуществах микросервисов и роли Domain-Driven Design в этом процессе.

Читать статью

#гайд
Приведите необходимые шаги для развертывания докеризированного приложения, сохраненного в репозитории Git

Шаги, необходимые для развертывания приложения зависят от окружения, основной процесс развертывания будет таким:

✍🏻 Сборка приложения с использованием Docker build в каталоге с кодом приложения
✍🏻 Тестирование образа
✍🏻 Выгрузка образа в Registry
✍🏻 Уведомление удаленного сервера приложений, что он может скачать образ из Registry и запустить его
✍🏻 Перестановка порта в прокси HTTP(S)
✍🏻 Остановка старого контейнера
Что такое виртуализация?

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

В результате виртуализация позволяет запускать две различные операционные системы на одном устройстве. Первая операционная система может использоваться для административных целей, в то время как остальные гостевые операционные системы загружаются как обычно, включая инициализацию и загрузку ядра. Этот метод также обеспечивает повышенный уровень безопасности, так как гостевая операционная система не имеет полного доступа к управляющей (host) операционной системе, что помогает избежать возможных уязвимостей в безопасности.

Есть три типа виртуализации:
✍🏻 Паравиртуализация
✍🏻 Эмуляция
✍🏻 Контейнерная виртуализация
Что такое объекты Docker?

Под объектами понимают образы, сервисы и контейнеры.
Образы — шаблоны с инструкциями только для чтения для создания контейнеров.
Контейнеры — запущенные экземпляры образов.
Сервисы — можно запустить несколько контейнеров поверх нескольких сервисов Docker, работающих совместно как swarm.

Еще объектами можно назвать сети и тома.
Можно ли использовать JSON вместо YAML в файле для docker-compose, если да — как?

Да, так можно сделать. Для этого нужно явно указать имя файла, например так:

docker-compose -f docker-compose.json up
🐰 Как решить проблему высокой связанности сервисов с помощью событийно-ориентированной архитектуры и RabbitMQ

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

Читать статью
Назовите продвинутые команды Docker

Наиболее важные из них:

docker -version: узнать установленную версию Docker;
docker ps: перечислить все запущенные контейнеры вместе с дополнительной информацией о них;
docker ps -a: перечислить все контейнеры, включая остановленные, вместе с дополнительной информацией о них;
docker exec: войти в контейнер и выполнить в нем команду;
docker build: собрать образ из Dockerfile;
docker rm: удалить контейнер с указанным идентификатором;
docker rmi: удалить образ с указанным идентификатором;
docker info: получить расширенную информацию об установленном Docker, например, сколько запущено контейнеров, образов, версию ядра, доступную оперативную память и т.п.;
docker cp: сохранить файл из контейнера в локальную систему;
docker history: показать историю образа с указанным именем.
Расскажите о командах systemd для управления Docker

Для запуска Docker многие дистрибутивы Linux используют systemd. Для запуска сервисов используется команда systemctl. Если ее нет, следует использовать команду service.

$ sudo systemctl start docker
$ sudo service docker start

Чтобы добавить сервис в автозагрузку, либо убрать его:

$ sudo systemctl enable docker
$ sudo systemctl disable docker

Для проверки параметров запуска сервиса и их изменения:

$ sudo systemctl edit docker

Просмотра связанных с сервисом журналов:

$ journalctl -u docker
Какие типы монтирования доступны в Docker?

Bind mount: подключаются к любой точке файловой системы сервера;
Volume mount: управляются Docker и хранятся как часть файловой системы сервера;
tmpfs mount: хранятся в оперативной памяти сервера, поэтому никогда не пишутся на реальную файловую систему сервера.
Назовите инструменты Ansible

Вот список различных инструментов, которые вы можете упомянуть во время собеседования с разработчиком:

Ansible Galaxy: веб-сайт Galaxy позволяет вам находить роли в сообществе и делиться ими, чтобы сэкономить ваше время.

Ansible Tower: инструмент командной строки (также с графическим компонентом), предоставляющий дополнительные функциональные возможности.

Visual Studio Code: разработанный Microsoft редактор кода с поддержкой YAML и Ansible посредством расширений.

Atom: текстовый редактор с открытым исходным кодом для отслеживания изменений проекта, полезный для интеграции с файлами YAML.
Расскажите о балансировщиках нагрузки в Kubernetes.

В Kubernetes балансировщик нагрузки — это компонент, который распределяет входящий сетевой трафик между несколькими экземплярами приложения, работающего в кластере. Балансировщик нагрузки отправляет подключения к одному серверу в пуле на основе алгоритма определения следующего сервера и отправляет новые подключения к следующему доступному серверу. Этот алгоритм идеален там, где виртуальные машины требуют значимых затрат, например в размещенных средах. Некоторые из стратегий, используемых для балансировки нагрузки, — это циклический перебор, бесконечность сеансов и хеширование IP.