Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni

🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!

23.10.2024

Програмний доступ до Docker

🐳 Чи знаєте ви, що в Docker є зручний клієнт на Go? Інтеграційний тест, про який я два дні тому писав, зупиняє контейнер саме через цей клієнт.

Причому якщо вам не потрібна авторизація, щоб запускати консольні команди docker, то й тут теж не потрібна: client.NewClientWithOpts(client.FromEnv) буде достатньо. Але авторизуватися та керувати іншими машинами теж можливо.

Ми використовували дві функції клієнта: вище згадану зупинку контейнера, а також отримання журналу через client.ContainerLogs(). Через журнал перевірялося, що в ньому немає помилок. Окрім того, буквально все, що можна зробити з Docker, можна зробити через цей API - бо сам Docker написаний на Go та його офіційні клієнти теж.

Та ось що дотепно — мені такий інтерфейс набагато більше подобається, ніж стандартний командний рядок! Він весь типізований та тому можливості перелічені та вичерпні. Наприклад, ось тип Mount - всі атрибути явні, навіть з переліченими типами на кшталт Type чи Consistency.

Можна було б взяти оцей модуль та зробити та його основі (та на основі самого Docker) щось цікаве — може, сервіс з пісочницею, може диригента для складних інтеграційних тестів.