Docker не запускается на windows 10

Обновлено: 08.07.2024

Если вы когда-нибудь пытались установить Docker для Windows , вы, вероятно, поняли, что программа установки не будет работать в Windows 10 Home. Только Windows Pro, Enterprise или Education поддерживают Docker. Обновление лицензии Windows является дорогостоящим, а также бессмысленным, поскольку вы по-прежнему можете запускать контейнеры Linux в Windows, не полагаясь на технологию Hyper-V , что является обязательным требованием для Docker для Windows.

Если вы планируете запускать контейнеры Windows , вам потребуется определенная версия и сборка Windows Server. Проверьте матрицу совместимости версии контейнера Windows для деталей.

В этом уроке я покажу вам, как быстро настроить виртуальную машину Linux в Windows Home с Docker Engine с помощью Docker Machine . Вот список программного обеспечения, которое вам понадобится для создания и запуска контейнеров Docker:

  • Docker Machine : инструмент CLI для установки Docker Engine на виртуальных хостах
  • Docker Engine : работает поверх ядра Linux; используется для сборки и запуска контейнеров
  • Docker Client : инструмент CLI для выдачи команд в Docker Engine через REST API
  • Docker Compose : инструмент для определения и запуска мультиконтейнерных приложений

Я покажу, как выполнить установку в следующих средах:

  1. В Windows с помощью Git Bash
  2. В подсистеме Windows для Linux 2 (работает под управлением Ubuntu 18.04)

Во-первых, позвольте мне объяснить, как установка Docker будет работать в Windows.

Как это устроено

Как вы, вероятно, знаете, Docker требует ядро ​​Linux для запуска Linux Containers. Чтобы это работало в Windows, вам нужно настроить виртуальную машину Linux для работы в качестве гостя в Windows 10 Home.

докер окна дома

Настройка виртуальной машины Linux может быть выполнена вручную. Самый простой способ — использовать Docker Machine, чтобы выполнить эту работу за вас, выполнив одну команду. Эта виртуальная машина Docker Linux может работать как в вашей локальной системе, так и на удаленном сервере. Docker клиент будет использовать SSH для связи с Docker Engine. Всякий раз, когда вы создаете и запускаете образы, фактический процесс будет происходить внутри виртуальной машины, а не на вашем хосте (Windows).

Давайте углубимся в следующий раздел, чтобы настроить среду, необходимую для установки Docker.

Начальная настройка

Вы можете иметь или не иметь следующие приложения, установленные в вашей системе. Я предполагаю, что нет. Если вы это сделаете, не забудьте обновить до последних версий. Я также предполагаю, что вы используете последнюю стабильную версию Windows. На момент написания статьи я использовал Windows 10 Home version 1903. Давайте начнем устанавливать следующее:

Установите Git Bash для Windows . Это будет наш основной терминал для запуска команд Docker.

Установите Chocolatey , менеджер пакетов для Windows. Это облегчит работу по установке остальных программ.

Установите VirtualBox и его расширение. В качестве альтернативы, если вы закончили установку Chocolatey, вы можете просто выполнить эту команду внутри терминала PowerShell с повышенными правами:

Если вы хотите попробовать запустить Docker в среде WSL2, вам нужно сначала настроить WSL2. Вы можете следовать этому руководству для пошаговых инструкций.

Настройка двигателя докера

Установка Docker Engine довольно проста. Сначала нам нужно установить Docker Machine.

Установите Docker Machine, следуя инструкциям на этой странице . Кроме того, вы можете выполнить эту команду внутри терминала PowerShell с повышенными правами:

Используя терминал Git Bash, используйте Docker Machine для установки Docker Engine. Это загрузит образ Linux, содержащий Docker Engine, и запустит его как виртуальную машину с использованием VirtualBox. Просто выполните следующую команду:

Далее нам нужно настроить, какие порты открываются при запуске контейнеров Docker. Это позволит нам получить доступ к нашим приложениям через localhost<:port> . Не стесняйтесь добавлять столько, сколько хотите. Для этого вам нужно запустить Oracle VM VirtualBox из меню «Пуск». Выберите виртуальную машину по умолчанию в боковом меню. Затем нажмите Настройки > Сеть > Адаптер 1 > Переадресация портов . Вы должны найти порт пересылки ssh уже настроенный для вас. Вы можете добавить еще так:

порты докера vm

Далее нам нужно разрешить Docker монтировать тома, расположенные на вашем жестком диске. По умолчанию вы можете монтировать только из каталога C://Users/ . Чтобы добавить другой путь, просто перейдите в Oracle VM VirtualBox GUI. Выберите виртуальную машину по умолчанию и перейдите в « Настройки» > « Общие папки» . Добавьте новый, нажав на символ плюса. Введите поля, как это. Если есть опция с именем Постоянная , включите ее.

тома докера вм

Чтобы избавиться от ошибки неверных настроек, как показано на скриншоте выше, просто увеличьте объем видеопамяти на вкладке «Дисплей» в параметре настроек. Видеопамять в этом случае не важна, так как мы будем запускать виртуальную машину в режиме без головы.

Чтобы запустить виртуальную машину Linux, просто выполните эту команду в Git Bash. Виртуальная машина Linux запустится. Дайте время для завершения процесса загрузки. Это не должно занять больше минуты. Вам нужно будет делать это каждый раз при загрузке вашей хост-ОС:

Далее нам нужно настроить переменные окружения Docker. Это позволяет клиенту Docker и Docker Compose взаимодействовать с модулем Docker, работающим на виртуальной машине Linux, по default . Вы можете сделать это, выполнив команды в Git Bash:

Вам нужно будет устанавливать переменные окружения каждый раз, когда вы запускаете новый терминал Git Bash. Если вы хотите избежать этого, вы можете скопировать вывод eval и сохранить его в своем файле .bashrc . Это должно выглядеть примерно так:

ВАЖНО : для DOCKER_CERT_PATH вам нужно изменить путь к файлу Linux на формат пути Windows. Также обратите внимание, что есть вероятность, что назначенный IP-адрес может отличаться от того, который вы сохраняли при каждом запуске виртуальной машины по default .

В следующем разделе мы установим Docker Client и Docker Compose.

Для этого раздела вам необходимо установить следующие инструменты, используя PowerShell в режиме администратора. Эти инструменты упакованы в установщик Docker для Windows. Поскольку установщик отказывается работать в Windows 10 Home, мы установим эти программы по отдельности, используя Chocolatey:

После завершения процесса установки вы можете переключиться обратно на терминал Git Bash. Вы можете продолжать использовать PowerShell, но я предпочитаю синтаксис Linux для выполнения команд. Давайте выполним следующие команды, чтобы убедиться, что Docker работает:

Если все вышеперечисленные команды выполняются успешно, это означает, что вы успешно установили Docker. Если вы хотите попробовать более амбициозный пример, у меня есть небольшое приложение Node.js, которое я настроил для запуска на контейнерах Docker. Во-первых, вам нужно установить GNU Make, используя PowerShell с правами администратора:

Далее выполните следующие команды. Запуск этого примера Node.js обеспечит отсутствие проблем с открытыми портами и томами монтирования в файловой системе Windows. Сначала перейдите к папке, которую вы уже смонтировали в настройках VirtualBox. Далее выполните следующие команды:

Когда вы нажмете последнюю команду, вы должны ожидать похожий вывод:

Получение вышеуказанного вывода означает, что монтаж тома прошел успешно. Откройте localhost:1234 чтобы подтвердить, что веб-сайт доступен. Это подтвердит, что вы правильно настроили порты. Вы можете редактировать исходный код, например, изменить заголовок h1 в App.jsx . Как только вы сохраните файл, страница браузера автоматически обновится. Это означает, что горячая перезагрузка модуля выполняется из контейнера Docker.

Я хотел бы обратить ваше внимание на docker-compose.yml файл docker-compose.yml . Для перезагрузки горячего модуля для работы из Docker Container в Windows требуется следующее:

При использовании пакета укажите порт HMR в стартовом скрипте package.json :

parcel src / index.html –hmr-port 1235

В правилах переадресации портов виртуальной машины убедитесь, что эти порты доступны хост-системе:

inotify не работает на файловых vboxsf , поэтому изменения файла не могут быть обнаружены. Обходной путь должен установить опрос для Chokidar через переменные окружения в docker-compose.yml . Вот полный файл, чтобы вы могли увидеть, как он установлен:

Теперь, когда у нас есть полностью рабочая реализация Docker на Windows 10 home, давайте настроим ее на WSL2 для тех, кто заинтересован.

Подсистема Windows для Linux 2

Установка Docker на WSL2 не так проста, как кажется. К сожалению, последняя версия Docker Engine не может работать на WSL2. Однако есть более старая версия, docker-ce=17.09.0

ubuntu , которая хорошо работает в WSL2. Я не буду освещать это здесь. Вместо этого я покажу вам, как получить доступ к Docker Engine, работающему на виртуальной машине, которую мы настроили ранее, с терминала WSL.

Все, что нам нужно сделать, это установить Docker клиент и Docker compose. Предполагая, что вы используете WSL2 Ubuntu Terminal, выполните следующее:

Установите Docker, используя официальные инструкции:

Установите Docker Compose, используя это официальное руководство . Альтернативой является использование PIP, который просто установит последнюю стабильную версию:

Исправьте проблему монтирования Docker в терминале WSL, вставив этот контент в /etc/wsl.conf . Создайте файл, если он не существует:

Вам нужно будет перезагрузить компьютер, чтобы этот параметр вступил в силу.

Предполагая, что Linux Docker VM работает, вам необходимо подключить к ней инструменты Docker в среде WSL. Если вы можете получить доступ к docker-machine из терминала Ubuntu, выполните команду eval . В противном случае вы можете вставить следующую переменную Docker в ваш файл .bashrc . Вот мой пример:

Вам нужно будет перезапустить свой терминал или выполнить source

/.bashrc чтобы настройки вступили в силу. Выполнение команд Docker должно работать правильно в WSL без помех.

Переход на Linux

Теперь мы подходим к концу этой статьи. Действия по настройке Docker в Windows 10 — это довольно длительный процесс. Если вы планируете переформатировать свою машину, вам придется снова пройти тот же процесс. Хуже, если ваша задача — установить Docker на несколько компьютеров под управлением Windows 10 Home.

Более простое решение — перейти на Linux для разработки. Вы можете создать раздел и настроить двойную загрузку. Вы также можете использовать VirtualBox для установки и запуска полного дистрибутива Linux внутри Windows. Проверьте, какой популярный дистрибутив вы бы хотели попробовать. Я использую Linux Lite, потому что он легкий и основан на Ubuntu. С VirtualBox вы можете попробовать столько дистрибутивов, сколько пожелаете.

Linux Lite VM

Если вы используете дистрибутив на основе Ubuntu, вы можете легко установить Docker с помощью следующих команд:

Вам нужно будет выйти, а затем войти, чтобы последняя команда вступила в силу. После этого вы можете запустить любую команду Docker без проблем. Вам не нужно беспокоиться о проблемах с монтированием или портами. Docker Engine работает как служба в Linux, которая по умолчанию запускается автоматически. Нет необходимости в подготовке виртуальной машины Docker. Все работает из коробки, не полагаясь на взломать.

Резюме

Я надеюсь, что вы установили и запустили Docker в Windows 10 Home. Я полагаю, что этот метод должен работать на более старых версиях, таких как Windows 7. В случае, если у вас возникнут проблемы, просто следуйте инструкциям, чтобы увидеть, если вы что-то пропустили. Заметьте, однако, что я не охватил все функции Docker. Вы можете столкнуться с ошибкой или неподдерживаемой функцией, которая требует обходного пути, или может вообще не иметь решения. Если это так, я бы порекомендовал вам просто переключиться на Linux, если вы хотите более плавной разработки с использованием Docker.

Выполнение docker version возвращает следующие результаты.

Запуск диагностики дает следующее:

Я пришел к выводу, что технология Windows еще не созрела. Используйте докер Linux, пока технология не станет зрелой.

1) В командном окне Windows 7 (cmd.exe) откройте cmd.exe с правами администратора и выполните следующую команду:

Вы получите следующий вывод:

Скопируйте команду ниже и выполните в cmd:

А затем выполните следующую команду для управления:

2) Для Windows 7 Powershell откройте powershell.exe с правами администратора и выполните следующую команду:

А затем выполните следующую команду для управления:

3) Если вы повторно откроете cmd или powershell, вам следует снова повторить соответствующие шаги.

Объяснение пожалуйста! Метод PowerShell - самый простой в использовании. Но почему возникает эта проблема и как ее можно решить с помощью одного лайнера? Если шаги 1 и 2 исключают друг друга, почему они пронумерованы 1 и 2? А как насчет Windows 10 (Enterprise)? Docker machine "default" does not exist. Use "docker-machine ls" to list machines. Use "docker-machine create" to add a new one.

Вы можете запустить "C:\Program Files\Docker\Docker\DockerCli.exe" -SwitchDaemon Docker CLI и указать ему контейнеры Linux или Windows. Это сработало для меня.

Это сработало для меня - Win10E - Docker версии 18.03.0-ce, сборка 0520e24 (с использованием linux vm - hyper v, виртуализация включена - что не позволяет мне запускать vm в виртуальном боксе - поэтому я могу использовать докер или виртуальную машину в одной точке вовремя)

Я знаю, что этот вопрос был давно, но я не нашел подходящего объяснения и решения, поэтому, надеюсь, мой ответ будет полезен :)

Предполагая , что вы установите Docker Toolbox на Windows, так docker и docker-machine команды будут доступны. Часто люди не понимают, когда использовать любой из них.

Эти docker команды используются только в пределах виртуальной машины для управления изображением . Эти docker-machine команды используются на хосте для управления виртуальными машинами Linux.

Поэтому используйте docker-machine команды на вашем компьютере с Windows. Используйте docker команду внутри вашей виртуальной машины. Чтобы использовать docker команды, например, docker ps вы можете либо открыть терминал быстрого запуска Docker, либо запустить их на своем cmd / bash / PowerShell:

docker-machine run default / предполагая, что по умолчанию ваша виртуальная машина Linux /

docker-machine ssh default

Это начнется boot2docker, и вы увидите значок докера в командной строке. Затем вы можете использовать docker команды.

Ошибка связана с этой частью:

В конфигурации демона по умолчанию в Windows для подключения докер-клиент должен быть запущен с повышенными привилегиями.

Я новичок в Docker. После установки Docker Toolbox (OS: Windows 10) я запускаю терминал быстрого запуска Docker и в консоли вижу следующее:

Что я сделал неправильно? Вся проверка шагов системы и установки взята из здесь.

Большое спасибо за вашу помощь!

Я получил ту же ошибку, когда установил Docker Toolbox на мой компьютер с Windows 10.

  1. Установите Docker Community Edition (не Docker Toolbox)
  2. Включить Hyper-V

Начиная с 2017 года Win 10, если у вас нет опции Hyper-V, значит, ваша ОС Windows не Enterprise Edition. Кроме того, Docker, кажется, работает намного лучше на процессорах Intel (не AMD).

  1. Добавьте C:\Program Files\Docker\Docker\resources\bin в путь в переменных среды.
  2. Откройте Git Bash и введите docker-compose up , и теперь эта команда должна работать.

Если у вас нет GitBash, пожалуйста, загрузите его.

Hyper-V и VirtualBox конфликтуют друг с другом.

Вы можете либо удалить Hyper-V, либо запустить

Вам необходимо выполнить следующие шаги:

Создайте виртуальный коммутатор, обратитесь к этой статье, чтобы узнать, как это сделать

.Создайте докер, используя этот сетевой коммутатор и драйвер hyper-V.

Virtualbox и Hyper-V не работают хорошо. Я НЕ являюсь автором.

Я отключил Hyper-V, используя функцию Windows, и это сработало для меня.

Посмотрите, когда вы бежите:

docker-machine create -d hyperv --hyperv-virtual-switch "Virtual Switch" default

ПРИМЕЧАНИЕ: это странно, и я не уверен, почему. После того, как я выполнил вышеуказанные шаги, теперь, когда я перезапустил Hyper-V с помощью диспетчера Hyper-V, Kitematic все еще работает и загружает изображения. Кто-нибудь может прокомментировать, почему он все еще работает, когда Hyper-V также работает? Спасибо.

Хороший
Али Ахсан

Решение, предложенное @Gene, является правильным и отлично работает, если:

  1. Один имеет Windows Pro Edition
  2. Инструменты управления Hyper-V и платформа Hyper-V включены

Иногда это не всегда так; вот что нужно сделать:

Проверьте Windows Edition:

Проверьте платформу Hyper-V (виртуализация)

Чтобы платформа Hyper-V была включена, необходимо включить виртуализацию; обычно это делается через BIOS.

Установить Docker на Windows WSL2

В этой заметке я расскажу как поставить Докер на Windows 10, но сначала я опишу установку Windows Subsystem for Linux. Работу с самим Докером я описывать не буду, сделаю это позже.

Установка WSL2 на Windows 10

Установка элементарная, главное проверьте чтобы ваш компьютер и Windows 10 отвечали минимальным требованиям.

UPD.

Для Windows 11 и Windows 10 (сборка 19041 и выше) для установки WSL достаточно одной команды (PowerShell с правами администратора):

wsl --install

Эта команда включит все необходимые компоненты и установит дистрибутив Linux (по умолчанию Ubuntu), вам нужно будет только перезагрузить компьютер.

Если коротко, то установка WSL2 на Windows 10 сводится к следующим шагам:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

4) Выбираем WSL 2 в качестве версии по умолчанию, если этого не сделать новые дистрибутивы Linux будут установлены в WSL 1. Вновь запускаем PowerShell с правами администратора и добавляем команду:

wsl --set-default-version 2

После я запускаю установленную Убунту и задаю логин и пароль.

Установленная Убунту через WSL2

Все, Убунту можно закрыть.

Установка Docker на Windows 10

Запускаем скачанный файл и производим обычную установку приложения Windows.

При установке убедитесь что установлена галочка на Enable WSL 2 Windows Features.

Установлена галочка на Enable WSL 2 Windows Features

После установки следуйте инструкциям и перелогиньтесь в Windows, Докер запуститься при следующем входе в Windows, иногда в первый раз может понадобится довольно длительное время.

Когда он запустится, рекомендую в окне приветствия нажать Start и пройти небольшое обучение.

После обучающего урока у вас будет запущен ваш первый Docker контейнер.

Запущен ваш первый Docker контейнер

Теперь вы можете заниматься разработкой в Windows 10 использую Docker.

Кстати, я не хочу чтобы Докер запускался каждый раз при включении компьютера, поэтому в настройках я убрал галочку Start Docker Desktop when you log in.

Читайте также: