Кроме того, узнайте, как использовать Portainer в качестве альтернативного графического интерфейса Docker.
Как разработчик, перешедший с Linux на Windows по многим причинам, я использую Docker Desktop уже несколько месяцев, потому что он автоматически обновляет мою среду Docker.
К сожалению, это больше невозможно, и я должен удалить Docker Desktop.
К счастью, я не использовал Docker Desktop для каких-либо команд или функций, кроме обновления ядра Docker, поэтому это изменение не повлияет на мой рабочий процесс.
Почему вы должны установить Docker без рабочего стола Docker?
Docker обновил свое Лицензионное соглашение Docker Desktop и разрешил профессиональное использование Docker Desktop в крупных организациях без платной подписки Docker. Это означает, что если в вашей компании более 250 сотрудников или годовой доход превышает 10 миллионов долларов, вы не сможете использовать Docker Desktop без платной подписки. Он остается бесплатным для небольших компаний, частного использования, проектов с открытым исходным кодом и образовательных целей.
Это обновление лицензии относится только к Docker Desktop, а не к Docker или Docker Engine. Это позволяет вам по-прежнему использовать Docker для разработки и всех типов сред, включая производственные. Обычно это обновление лицензии не влияет на бизнес вашей компании при работе с Docker.
Предпосылки
Чтобы следовать этому руководству, вам потребуется рабочая станция, совместимая с WSL2, например Windows 10 версии 2004 или выше. Чтобы проверить, какая версия установлена, нажмите Windows logo key + R
и нажмите Enter, чтобы отобразить настройки вашей системы. Если вы не соответствуете требованиям, обновите Windows.
Если Docker Desktop установлен, его необходимо удалить.
В Windows должна быть включена подсистема Linux. Это можно сделать, нажав клавишу журнала Windows, введя «Включение и отключение компонентов Windows» и открыв его.
Прокрутите вниз и активируйте функцию, если она отключена.
После активации нажмите OK и перезагрузите компьютер.
Вы также можете установить подсистему Linux с помощью команды PowerShell:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Установите Ubuntu на WSL2
После того, как вы настроите предварительные условия, вам нужно открыть PowerShell с правами администратора и установить Ubuntu в WSL2 с помощью следующей команды:
wsl --set-default-version 2 wsl --install -d Ubuntu
На этом этапе вы также можете установить различные подмодули Linux.
После завершения установки вы должны проверить, была ли установлена Ubuntu правильной версии:
wsl -l -v
Если все работает правильно, вы должны увидеть установленную Ubuntu с соответствующей версией WSL. Если версия неверна, вы можете изменить ее с помощью:
wsl --set-version Ubuntu-YY.MM 2
ГГ.ММ — это версия версии Ubuntu, которую вы недавно установили.
Установить Докер
Чтобы установить Docker в Windows в подмодуле Ubuntu, вы можете выполнить официальные шаги по установке Docker в Ubuntu:
Другой способ — создать новый файл и скопировать в него следующий скрипт. Эти команды только скопированы из официального учебника в файл, чтобы поделиться с другими разработчиками.
Переключитесь на свой подмодуль Ubuntu в PowerShell и запустите файл, чтобы установить Docker и необходимые зависимости.
Теперь вы можете запустить и проверить, все ли работает правильно, с помощью:
sudo service docker start # start the engine sudo service docker status # print some nice status information docker run hello-world # run a test docker container
После завершения последней команды вы должны увидеть работающий образ Docker:
Распространенные проблемы с дистрибутивом Ubuntu WSL2
Если вы устанавливаете Ubuntu в качестве дистрибутива WSL2 и используете хотя бы один, основанный на Ubuntu Hirsute Hippo (21.04), может случиться так, что ваш демон docker не запустится правильно.
При попытке запустить dockerd
будет выдан следующий журнал ошибок:
... INFO[2021-09-25T15:06:20.839195000+08:00] Loading containers: start. INFO[2021-09-25T15:06:20.885624800+08:00] stopping event stream following graceful shutdown error="<nil>" module=libcontainerd namespace=moby INFO[2021-09-25T15:06:20.885865900+08:00] stopping healthcheck following graceful shutdown module=libcontainerd INFO[2021-09-25T15:06:20.886012400+08:00] stopping event stream following graceful shutdown error="context canceled" module=libcontainerd namespace=plugins.moby failed to start daemon: Error initializing network controller: error obtaining controller instance: unable to add return rule in DOCKER-ISOLATION-STAGE-1 chain: (iptables failed: iptables --wait -A DOCKER-ISOLATION-STAGE-1 -j RETURN: iptables v1.8.7 (nf_tables): RULE_APPEND failed (No such file or directory): rule in chain DOCKER-ISOLATION-STAGE-1 (exit status 4))
Я заметил, что iptables
, используемый докером, является версией nftables
. Это привело к ошибке, т.к. начиная с версии 20.10 Ubuntu переключил систему брандмауэра на nftables
(об этом можно прочитать на этом сайте). К сожалению, для использования nftables
изначально требуется ядро Linux 5.8, но последняя версия ядра для WSL — 5.4.
К счастью, в Ubuntu все еще есть возможность использовать устаревшую версию iptables
, просто выполнив:
$ sudo update-alternatives --config iptables There are 2 choices for the alternative iptables (providing /usr/sbin/iptables). Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/sbin/iptables-nft 20 auto mode 1 /usr/sbin/iptables-legacy 10 manual mode 2 /usr/sbin/iptables-nft 20 manual mode Press <enter> to keep the current choice[*], or type selection number: 1 update-alternatives: using /usr/sbin/iptables-legacy to provide /usr/sbin/iptables (iptables) in manual mode
После обновления iptables
просто перезапустите демон Docker, и вы заметите, что Docker начинает работать правильно.
Установите Docker Compose
Установку Docker Compose можно выполнить в подмодуле Ubuntu. Откройте окно PowerShell и переключитесь на подмодуль Ubuntu. Затем загрузите последнюю версию с GitHub:
$ sudo curl -L https://github.com/docker/compose/releases/download/2.4.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
Далее предоставьте права на выполнение команде docker-compose:
sudo chmod +x /usr/local/bin/docker-compose
После этого вы можете протестировать функциональность, выполнив docker-compose -version
в подмодуле Ubuntu или wsl docker-compose -version
из любого окна PowerShell.
Как интегрировать Docker и Docker Compose в вашу PowerShell
Если вы следуете руководству, у вас должно быть:
- Подсистема WSL2 Linux установлена
- Установил и настроил Docker на Ubuntu
- Установленный Docker Compose
Вы можете использовать все команды Docker внутри своего подмодуля Ubuntu, а также в PowerShell, указав перед командой wsl
:
wsl docker ps wsl docker-compose -version
Для удобства вы должны иметь возможность использовать любую команду Docker, не добавляя перед ней wsl
. Для этого вы можете создать псевдоним для своего PowerShell. Читать об этом здесь и все настроить.
Затем найдите свой профиль PowerShell.
echo $PROFILE
и откройте этот файл в редакторе и вставьте это содержимое:
Function Start-WslDocker { wsl docker $args } Function Start-WslDockerCompose { wsl docker $args }
Set-Alias -Name docker -Value Start-WslDocker Set-Alias -Name docker-compose -Value Start-WslDockerCompose
Сохраните файл и перезапустите терминал PowerShell, чтобы проверить, работает ли псевдоним, набрав:
docker ps docker-compose -version
Если вы не получите сообщение об ошибке, оно работает так, как ожидалось.
Установка Портейнера
Чтобы лучше заменить Docker Desktop и иметь что-то вроде графического интерфейса Docker, вам следует установить Portainer в локальной среде.
Portainer — это мощное решение «Контейнер как услуга» с графическим интерфейсом, которое помогает организациям легко и безопасно управлять облачными приложениями и развертывать их.
С Portainer вы можете:
- Развертывание приложений с помощью определенных шаблонов приложений (нажмите, чтобы развернуть)
- Развертывание и управление стеками из файлов Compose, включая развертывание непосредственно из git
- Развертывание контейнеров и управление ими, включая возможность редактирования запущенного контейнера
- Вытягивать/проталкивать/создавать образы
- Создать сети
- Создание/удаление томов
- Просмотр журнала событий Docker
- Просматривайте информацию о механизме докеров (хост) и при необходимости применяйте меры безопасности.
Этот файл Docker Compose можно использовать для установки Portainer CE в качестве службы Docker, которая автоматически перезапускается, если не работает.
# docker-compose.yml
version: '3'
services:
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
restart: unless-stopped
security_opt:
- no-new-privileges:true
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./portainer-data:/data
ports:
- 9000:9000
Сохраните его в любую папку и запустите в PowerShell:
docker-compose up -d
Переключитесь в браузер и откройте http://localhost:9000.
Примечание по времени. Убедитесь, что вы вошли в систему и создали свои учетные данные вскоре после того, как Portainer будет готов, иначе он автоматически отключится из соображений безопасности. Если вы не создали учетные данные вовремя и он автоматически отключился, вам необходимо перезапустить службу.
Плюсы/минусы этого решения
Плюсы
Есть несколько преимуществ по сравнению с версией Docker Desktop:
- Движок Docker бесплатный. Таким образом, обновление лицензии не будет проблемой для вашей среды разработки и производства.
- Portainer — это готовое к работе программное обеспечение для управления вашей средой Docker, которое также часто используется в среде кластера серверов.
- Вы намного быстрее изучите основы Docker и получите больше компетенций DevOps.
- Часто производственные среды работают в Linux, поэтому ваша среда разработки приближается к производственной среде.
Минусы
Единственным недостатком для меня является то, что вы должны обновить его вручную, вместо того, чтобы нажимать кнопку «ОК», если доступна новая версия.
Заключительные примечания
Спасибо за чтение этой статьи!
Я надеюсь, что вам понравилось его читать, и теперь вы можете установить среду Docker на свой хост Windows в подмодуле Ubuntu. Кроме того, я надеюсь, что теперь вы можете использовать и устанавливать Portainer и Docker Compose в Windows. Если это работает для вас, я хотел бы получить ваши отзывы в разделе комментариев. Кроме того, если у вас есть какие-либо вопросы, пожалуйста, запишите их ниже. Я отвечу на них, если это возможно.
Эта статья была опубликована в моем блоге по адресу https://www.paulsblog.dev/how-to-install-docker-without-docker-desktop-on-windows/
Want to Connect? If interested feel free to connect with me on my personal website, Twitter, LinkedIn, and GitHub!