Продолжаю изучать фреймворк Django. В одной из лекций понадобился Docker... Что ж за "зверь" такой, этот docker?!
Docker — популярная технология контейнеризации, появившаяся в 2013 году. Тогда одноименная компания предложила способ виртуализации ОС, при котором код приложения, среда запуска, библиотеки и зависимости упаковываются в единую «капсулу» — контейнер Docker.
Благодаря контейнеризации и использованию Docker разработчики больше не задумываются о том, в какой среде будет функционировать их приложение и будут ли в этой в среде необходимые для тестирования опции и зависимости. Достаточно упаковать приложение со всеми зависимостями и процессами в контейнер, чтобы запускать в любых системах: Linux, Windows и macOS. Платформа Docker позволила отделить приложения от инфраструктуры. Контейнеры не зависят от базовой инфраструктуры, их можно легко перемещать между облачной и локальной инфраструктурами.
Пока сложно для понимания "что это такое и с чем его едят", для начала попробую поставить данный продукт на свои компьютеры с Arch-подобной Linux (у меня Manjaro).
Открываем главную страницу приложения Docker, все на английском но яндекс-браузер перевёл на русский. Клац по кнопке "скачать для Linux"
Попадаем на следующую страницу:
Где можно видеть малоприметную ссылочку на инструкцию по установке на Arch-подобные системы. Переходим и видим инструкцию:
В которой предлагается установить gnome-terminal. Пока не знаю зачем, но соглашусь, устанавливаю:
Затем предлагается пройти на страницу загрузки "докера" и скачать последнюю версию для Arch. Ссылочку умело замаскировали, я ее не сразу обнаружил.
Итак, "докер" скачан, сейчас буду устанавливать (я еще этого не делал, всё пишется в режиме реального времени). Открываю терминал, перехожу в директорию "Загрузки" и пытаюсь выполнить тот код, который написан в инструкции (установить ту программу что я только что скачал):
sudo pacman -U ./docker-desktop-<version>-<arch>.pkg.tar.zst
После ввода пароля sudo у меня система запросила варианты выбора каких-то дополнительных пакетов. Понятия не имею что это такое и с чем это едят, выбор варианта - по умолчанию "1":
Пошла установка:
Установка успешно завершена:
Далее предлагается запустить установленную программу, командой:
systemctl --user start docker-desktop
Попробовал, что-то запустилось, но явно пошло что-то не так, ибо обычно про ошибки сразу же не сообщается:
Попробовал нажать кнопочку Reset Docker to factory defaults, после чего было сообщение о том что сброс произведен и запросился снова пароль sudo. И на этом всё, может надо заново запустить команду?!
Нет, таже самая фигня. Ну да ладно, мне "докер" нужен в Pycharm, пробую запустить его и что из этого получится. Опаньки! Пучарм, после запуска, предложил установить плагин "докера"
После установки - непонятно куда идти дальше, ведь в уроках SkillBox должны в проекте появиться какие-то файлы от Docker, которые в лекции исправляют... А у меня пока нет, пересмотрю снова лекцию по Docker. В лекции узнал что:
- Нужно оказывается включить в биос настройки виртуализации, у меня же они были выключены.
Перезагрузился, вошел в биос и исправил настройки виртуализации
После чего, командой выше попытался снова запустить Docker, и о чудо - заработало:
Теперь нужно запустить Pycharm и проверить там в консоли что докер так же запускается.
но тут пока что "фигвам - индейское жилище".
Перелистал множество статей, попробовал даже переустановить "docker". А так же прошел регистрацию на сайте "докера", установил ключ безопасности в менеджере паролей pass. Но ошибка всё была одна и та же. Чего-то ему не хватало. Что именно - не понимал. Поиск в интернете предлагал понизить версию докера и прочие варианты решения проблемы. Но всё оказалось банально - нужно было в консоли выполнить установку "докер" командой "sudo pacman -S docker":
Для отработки пройденных лекций нужна именно консольная версия докер. После установки всё заработало.
Закрался вопрос: так может быть всё что я тут описал про установку docker-desktop, это всё не нужно?! Достаточно было только одной команды sudo pacman -S docker??? Ладно, утром разберусь!
Я создал docker-контейнер, где запустил джанго-приложение, у меня всё заработало (как в лекциях), кроме django-debug-toolbar. Понятно что опять что-то упустил. Но время было уже полночь и башка отказывалась соображать. Утро вечера мудреней
На утро запустил Pycharm, пытаюсь пересобрать джанго-приложение (после внесенных изменений) в среде докер (docker compose build app) ииии...
ошибка...
Вот тут то я и понял - не зря значит я устанавливал docker-desktop и всё тут расписывал. Запустив из "пуска" docker - у меня сразу снова всё заработало.
Ну вот. заработало. С чувством выполненного долга отправился на прогулку.
У меня еще 10 дней отпуска впереди...
ЗЫ. Статья не претендует на истину в последней инстанции, я всего лишь учусь. Но если кому-то это пригодится - буду рад.
UPD.22.09.23
Внизу, товарищ посоветовал сделать проще:
sudo pacman -S docker
Да, консольный докер установится, плюс к нему можно установить docker-compose, и даже всё это дело запускается. Но лишь с применением sudo. А это как бы не совсем катит.
Вот я вышел на работу, а тут на рабочем компе docker не установлен и я попробовал установить только консольные версии. Установил. Работает. Но через, как я писал выше, sudo.
Пришлось почитать свою статью и установить docker-desktop, которого нет в репозитории pacman, хотя, возможно можно было поискать в AUR. Но я решил идти той же дорогой которой уже ходил. И она была успешна.
Да, забыл описать процедуру вхождения в программу под своим аккаунтом. Нужно сгенерировать gpg-key:
gpg --generate-key
После чего кнопка Sign в приложении станет активна и отправит вас на сайт докера для завершения регистрации.
ЗЫ. В процессе установки возникла ошибка. Установщику не понравился установленная программа docker-compose, пришлось ее удалить.