Как стать автором
Обновить

Docker Desktop для Ubuntu: установка, минусы и альтернатива

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров25K

Всех приветствую. Переустанавливая Убунту, подумал, почему бы не попробовать Docker Desktop в этот раз, ведь он уже должен быть в приемлимом для использования состоянии. Для чего он может пригодиться, спросите вы? Как-то я насоздавал кучу volumes и разных images примерно одного и того же, и чистить это было не в удовольствие, хоть и есть специальные команды для этого, но зачем до такого доводить, не лучше было бы иметь какой-то UI, чтобы следить за всем и по необходимости сразу удалять?

Казалось бы, раз на Linux с docker нет никаких проблем, то и с Docker Desktop (далее DD) не должно быть, но не тут то было. Будем подразумевать, что у вас уже установлен docker, если нет, то вот ссылка на гайд со всеми нужными вам командами и способами. Ну что же, приступим.

UPD: В комментариях поправили, что docker для работы Docker Desktop не нужен, но т.к. (спойлер) я рекомендую в конце его снести и просто подключить другую UI к обычному докеру, и т.к. даже в оф. документации DD подразумевается его наличие и упомянуто как отключить обычный docker, то я оставлю это как есть.

Функционал Docker Desktop
Функционал Docker Desktop

1. Требования

У Docker Desktop есть куча требований для того, чтобы он нормально работал на Ubuntu. С них и начнем, по порядку.

  1. ЦП должен быть 64 битным и иметь поддержку виртуализации. Как ее включить в вашем UEFI найдете в интернете.

  2. Должна быть поддержка KVM виртуализации. На практике она должна быть, если вы в UEFI включили виртуализацию. Проверяется modprobe kvmkvm-ok или lsmod | grep kvm. Также нужно добавить себя в группу kvm udo usermod -aG kvm $USER.

  3. Куча неважных на практике требований. Такие, как QEMU версии 5.2 или выше, systemd init system, GNOME/KDE/Mate ГУИ Линукса, как минимум 4 гб оперативки. На деле же это все и так выполняется, если у вас Ubuntu 22.04, которую DD и требует (также он допускает 21.10, но думаю там с этим тоже все в порядке).

  4. Должен быть включен File sharing. Еще одна неведомая вещь (маппинг айдишников), которая на практике у меня уже была в порядке на 22.04 версии. Подробнее можете прочитать здесь. Советую просто проверить, что вывод этих команд у вас такой, если так и есть, то можете двигаться дальше.

    $echo $USER- exampleuser$cat /etc/subuid- exampleuser:100000:65536$cat /etc/subgid- exampleuser:100000:65536

  5. Рекомендуется инициализировать менеджер паролей pass. Честно, никогда им не пользовался, но для гайда открыл. Пишите команду gpg --generate-key, вводите свои данные, копируете id из ответа команды

    то что вместо <generated_gpg-id_public_key>
    то что вместо <generated_gpg-id_public_key>

    После чего пишите команду pass init <your_generated_gpg-id_public_key>

    И после этого он будет у вас иногда спрашивать указанный пароль при запуске DD и некоторых команд. Честно не совсем понял для чего это надо, говорят для использования приватных images вашего докер аккаунта, но кто вообще загружает свои images, да и зачем тогда в самом приложении просить вводить логин/пароль, этот момент я не совсем понял, но кто хочет - можете повторить, подробнее здесь.

2. Установка

Все, кажется все самое страшное позади, пора приступить к установке. Качаете deb package. Пишите команду sudo apt-get install ./docker-desktop--... и можете открывать появившееся приложение в списке приложений. Принимаете соглашения, логинитесь, вводите пароли, все как обычно, после этого у вас должно быть работающее приложение.

3. Как использовать?

Во-первых, с установкой DD он поставит docker compose v2, который отличается от привычного тем, что больше нет тире в команде docker-compose. Если сейчас вы запустите какой-нибудь компоуз или докер файлик, то вы не увидите ничего в приложении. Почему? Потому что у DD и обычного докера разные контексты. Как начать работать с контекстом DD? Напишите команду docker context use desktop-linux и после этого можете вводить привычные вам команды в терминал и все действия будут отображаться в DD.

UPD: Поправили в комментариях что при запуске DD сам меняет контекст, хотя я точно помню, что раньше читал про необходимость самому сменять, но наверное я набрал в терминал команду до полного старта приложения, думаю в любом случае знать об этом не помешает, также как и сменить лишний раз вручную перед запуском команды.

4. Итог

Очень много танцев с бубнами, и ради чего? Чтобы пользоваться ГУИшкой докера? Какая-то высокая цена, учитывая также, что включение виртуализации ради этого кажется не очень разумным в том числе (особенно для тех, кто делал себе dual boot по-моему предыдущему гайду и использует Винду для игр, тогда виртуализация тормозит ЦП и вообще говорят открывает какие-то дырки в безопасности, которые вряд-ли кого-то волнуют).

5. Что же делать?

Сносим к чертям DD. Для этого тоже придется немного потанцевать. Во-первых, вводим команду sudo apt remove docker-desktop , далее еще пару команд:

rm -r $HOME/.docker/desktopsudo rm /usr/local/bin/com.docker.clisudo apt purge docker-desktop

И после этого удаляем поля credsStore  и currentContext в файлике $HOME/.docker/config.json. Поздравляю вас, вы успешно избавились от ненужного вам DD, можете отключать виртуализацию (если она вам не нужна) и устанавливать более легковесное решение.

6. Альтернатива

К сожалению, перед тем как это все проделывать, я не знал, что существует более легковесное решение, работающее с дефолтным контекстом, а значит не нужно танцевать с бубнами. Называется оно "Portainer". Устанавливается в 2 клика: Создаем volume docker volume create portainer_data и скачиваем image:

docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest

Единственные требования - это открытые порты 8000 и 9443, но и то их можно перенаправить в данной команде, и sudo доступ. Далее заходим на https://localhost:9443 и вводим имя пользователя и пароль, далее нас перекинет в админ панель, которая ничем не уступает DD, по крайней мере на мой первый взгляд. Запускаться будет автоматически с запуском докера, но и это поведение можно исправить в этом же приложении, изменив поле "restart" у контейнера portainer.

Функционал Portainer
Функционал Portainer

Ну что же, надеюсь эта статья также будет кому‑то полезна, ведь теперь по прежнему можно вызывать все команды из терминала, периодически заходя в portainer и поглядывая, что вы не наплодили слишком много images и volumes, и что у вас не запущены лишние контейнеры.

Теги:
Хабы:
Всего голосов 15: ↑8 и ↓7+3
Комментарии44

Публикации

Истории

Работа

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
11 сентября
Митап по BigData от Честного ЗНАКа
Санкт-ПетербургОнлайн
14 сентября
Конференция Practical ML Conf
МоскваОнлайн
19 сентября
CDI Conf 2024
Москва
20 – 22 сентября
BCI Hack Moscow
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн