Базові питання з Docker на співбесіді
Цей матеріал — переклад англомовного тексту з Medium. Додавайте свої запитання та відповіді в коментарях.
1. Яка різниця між Image, Container and Engine?
Image — це попередньо зібраний і налаштований програмний пакет, який містить усі необхідні залежності та інструкції для запуску певної програми чи сервісу. Container — це екземпляр Image, створений під час виконання, з власним унікальним набором ресурсів і файловою системою. Engine — це програмне забезпечення, яке забезпечує створення Image і Container і керування ними, таке як Docker.
2. Яка різниця між командою Docker COPY та ADD?
Команда COPY використовується для копіювання файлів із хост-системи в контейнер, тоді як команда ADD може робити те саме, але також підтримує стиснення файлів і джерела URL-адрес.
3. Яка різниця між командою Docker CMD і RUN?
Команда CMD використовується для вказівки команди, яку слід запускати, коли контейнер запускається з образу, а команда RUN використовується для виконання команд під час процесу створення (збирання) образу (image).
4. Як зменшити розмір Docker Image?
Щоб зменшити розмір образу Docker, ви можете використовувати багатоетапні збірки, видаляти непотрібні файли та залежності та використовувати менші базові images.
5. Навіщо і коли використовувати Docker?
Docker — це платформа контейнеризації, яка дозволяє розробникам пакувати, розгортати та запускати програми в узгодженому та ізольованому середовищі, забезпечуючи послідовність і відтворюваність, ізоляцію, переносимість, масштабованість, економічну ефективність, архітектуру мікросервісів і віртуалізацію застарілих програм. Вона широко використовується в розробці, тестуванні, продакшені та CI/CD.
6. Поясніть компоненти Docker і те, як вони взаємодіють один з одним.
Docker має кілька компонентів, у тому числі daemon Docker, який керує створенням контейнерів і керування ними, клієнт Docker, який спілкується з daemon для видачі команд, і реєстр Docker, який зберігає та розповсюджує образи.
7. Поясніть термінологію: Docker Compose, Docker File, Docker Image, Docker Container.
Docker Compose — це інструмент для визначення та запуску багатоконтейнерних програм. Dockerfile — це сценарій, який містить інструкції зі створення образу. Образ Docker — це попередньо зібраний і налаштований програмний пакет, який можна використовувати для створення контейнера. Контейнер Docker — це екземпляр образу, створеного під час виконання.
8. У яких реальних сценаріях ви використовували Docker?
Я використовував Docker у різних сценаріях, включаючи розробку, CI/CD, архітектуру мікросервісів, тестування,для стейджингу, продакшена, віртуалізації легасі-програм, середовища Data Science та Big Data. Docker забезпечує послідовність і відтворюваність збірок, просте масштабування та керування програмами, а також ефективне використання системних ресурсів.
9. Docker проти Hypervisor.
І Docker, і Hypervisor дозволяють запускати кілька ізольованих середовищ на одному хості, але вони відрізняються тим, як досягають цієї ізоляції. Hypervisor створює віртуальні машини, кожна зі своєю операційною системою, а Docker запускає кілька контейнерів в одній операційній системі.
10. Які переваги та недоліки використання Docker?
Переваги використання Docker включають послідовність і відтворюваність збірок, просте масштабування та керування програмами, а також ефективне використання системних ресурсів. Недоліки включають відносно високий вхідний поріг для вивчення та підвищену складність у певних ситуаціях.
11. Що таке Docker namespace?
Docker namespace — це віртуалізоване середовище для певних системних ресурсів, наприклад мережевих інтерфейсів, яке використовується для ізоляції контейнерів один від одного.
12. Що таке реєстр Docker?
Реєстр Docker — це служба, яка зберігає та розповсюджує образи Docker.
13. Що таке entry point?
Entry point — це команда, яка виконується під час запуску контейнера з образу.
14. Як реалізувати CI/CD у Docker?
Щоб реалізувати CI/CD у Docker, ви можете використовувати інструмент безперервної інтеграції для створення та автоматичного тестування образів, а потім використовувати інструмент оркестрації контейнерів для розгортання та керування контейнерами у робочому середовищі.
15. Чи будуть дані в контейнері втрачені після того як він (контейнер) завершив роботу?
Дані в контейнері буде втрачено, коли контейнер завершить роботу. Для того щоб зберігати дані між запусками контейнера можна використати volume або bind mount.
16. Що таке Docker swarm?
Docker Swarm — це власна функція оркестрації Docker, яка дозволяє створювати та керувати кластером Docker engines, який називається swarm. Цей кластер дає змогу планувати та керувати розміщенням контейнерів у swarm, дозволяючи легко масштабувати програму та керувати нею. За допомогою swarm ви також можете виконувати оновлення своєї програми, забезпечуючи високу доступність і мінімізуючи час простою. Крім того, swarm дозволяє збалансувати навантаження трафіку до вашої програми, автоматично розподіляючи його між доступними вузлами в swarm.
17. Які команди Docker для:
Переглянути запущені контейнериdocker ps
Команда для запуску контейнера під певним іменемdocker run --name <name> <image>
Команда для експорту докераdocker export <container> > <filename>
Команда для імпорту вже існуючого образу докераdocker import <filename> <repository:tag>
Команда для видалення контейнераdocker rm <container>
Команда для видалення всіх зупинених контейнерів, невикористаних мереж, очищення кешу і «висячих» образівdocker system prune
18. Які загальні практики зменшують розмір images Docker?
Загальні методи зменшення розміру образів Docker включають: використання багатоетапних збірок, видалення непотрібних файлів і залежностей, використання менших базових зображень, використання файлу .dockerignore, стиснення кількох шарів, використання механізму кешування, закріплення версії та використання сканування образів та інструменти аналізу вразливостей. Хоча ці методи можуть допомогти зменшити розмір images, важливо враховувати їх вплив на функціональність програми.
36 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів