В інструкції до всяких модних штук часто написано "Встановіть docker та docker-compose", і щоразу на новій машині мене чекають тут сюрпризи. Я це роблю не так часто, щоб перейматись, але й не так рідко, щоб забувати, що "три простих кроки" завжди затягуються на багато годин на StackOverFlow. Хочу поділитися моїм особистим рейтингом проблем із докером за останній рік:
- Docker встановлюється зараз командою "apt-get install docker.io" . А шо такоє? І де ділися торішні docker-ce, docker-ee? Ця швидкоплинна минучість бізнес-моделей Docker Corporation вже давно не дає провітритись моєму кріслу.
- docker-compose можна встановити з apt. Але він там дуже старий. І про це ви дізнаєтесь на 3-му посиланні з ґуґла, пошукавши стектрейс. Звичайно ж треба ставити його через pip, там він новий (всі ж це знають). Але не забудьте, що (цитата) "pip тільки встановлює файли, але не змінює права доступу". Тому "pip install docker-compose" треба або робити з рутової консолі, або виставивши попередньо нормальний umask 0022 . Отут докладніше. Тільки мені здається, що пацики зарелізили тулзу з корявими пермішонами на файли? Чому ні для чого іншого такі трюки не потрібні?
- Дозволи. Куди без них у *nix. Але якщо працюєш локально, то і набір інструментів керування пермішонами у тебе один. Із віртуалкою під докером же у тебе не те щоб 2 набори інструментів, а скоріше "більше ніж один". Це як мати набір болтів із гайками, і взяти ще досипати гайок від інших болтів. Найбільше траблів у мене було, коли я намагався загорнути до докера білд-процес. Я хотів, щоб докер взяв локальну теку сорців, у себе там всередині відпроцесив (ізоляція залежностей, оце все), і поклав туди само теку результатів-бінарників. Мені вдалося це зробити єдиним способом, коли я запускав контейнер через CLI, при цьому замаунтивши хостове
/etc/passwd
всередину контейнера через volume. Отут почитайте, теж люди пишуть цікаве та інтересне. Через docker-compose мені це не вдалося, і в "продакшн" це рішення не пішло, як "неелеґантне". - Врешті, відмінності у синтаксисі одних і тих самих команд у триєдиному інтерфейсі docker. Уважно читайте перед використанням. Як сказано у Дзені Пайтона: "... утримайся від омани вгадати."
- Dockerfile, приклади: https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
- Docker CLI - інтерфейс командного рядка - вибір камікадзе та любителів поґрепати історію власної консолі, хелп: https://docs.docker.com/engine/reference/commandline/cli/
- docker-compose - найкращий, як на мене, спосіб, але із своїми обмеженнями та активно збільшуваним номером версії синтаксису. Остання версія 3: https://docs.docker.com/compose/compose-file/compose-versioning/#version-3
Хвала {boh}у, що тепер, на відміну від пари років тому, можна знайти відповіді на ще не задані (саме Вами) питання прямо на сайті docs.docker.com!
Про докер на вінді я взагалі не хочу згадувати. Чи через тестерську карму, чи через щось інше, вже на другому робочому ноуті не можу його запустити через різні обмеження залізячного характеру. Беру інший ноут з Ubuntu, чи віртуалку з нею під VirtualBox.
Усім терпіння та контейнерізованих мікросервісів!
Немає коментарів:
Дописати коментар