- Контейнеры Linux в Windows 10
- Контейнеры Linux на виртуальной машине Moby
- Preview: Linux Containers on Windows
- Running Docker Linux Containers on Windows with LinuxKit
- Setup Docker and LinuxKit
- Try it
- Looking ahead
- Начало работы с удаленными контейнерами Docker в WSL 2
- Общие сведения о контейнерах Docker
- Предварительные требования
- Установка Docker Desktop
- Разработка в удаленных контейнерах с помощью VS Code
- Устранение неполадок
- Нерекомендуемый контекст DOCKER WSL
- Не удается найти папку хранилища образов DOCKER
Контейнеры Linux в Windows 10
Контейнеры Linux составляют огромную долю общей экосистемы контейнеров и имеют важное значение для разработки и рабочих сред. Так как контейнеры и узел контейнеров используют одно ядро, запуск контейнеров Linux непосредственно в Windows — не лучший вариант. Как раз в таких случаях и применяется виртуализация.
Контейнеры Linux на виртуальной машине Moby
Чтобы запустить контейнеры Linux на виртуальной машине Linux, выполните инструкции из статьи о начале работы с Docker.
Docker поддерживает запуск контейнеров Linux на компьютерах с Windows с момента своего первого запуска в 2016 г. (до того, как стали доступны изоляция Hyper-V или контейнеры Linux в Windows). Для этого используется виртуальная машина на базе LinuxKit, работающая в Hyper-V.
В такой модели клиент Docker запускается на компьютере с Windows, но отправляет вызовы в управляющую программу Docker на виртуальной машине Linux.
В этой модели все контейнеры Linux совместно используют один узел контейнера, а также:
- используют одно ядро совместно с виртуальной машиной Moby, но не с узлом Windows;
- имеют согласованные свойства сети и хранилища между контейнерами Linux, работающими в Linux (так как они работают на виртуальной машине Linux).
Это также означает, что в узле контейнера Linux (виртуальной машине Moby) должна быть запущена управляющая программа Docker и все ее зависимости.
Чтобы узнать, используется ли виртуальная машина Moby, проверьте в диспетчере Hyper-V ее наличие с помощью пользовательского интерфейса или выполните команду Get-VM в окне PowerShell с повышенными привилегиями.
Источник
Preview: Linux Containers on Windows
Microsoft is getting ready for the next big update for Windows Server (check out today’s complimentary Microsoft blog post ) and some of the new features are very exciting for Docker users. One of the most important enhancements is that Docker can now run Linux containers on Windows (LCOW), using Hyper-V technology.
Running Docker Linux containers on Windows requires a minimal Linux kernel and userland to host the container processes. This is exactly what the LinuxKit toolkit was designed for: creating secure, lean and portable Linux subsystems that can provide Linux container functionality as a component of a container platform.
We’ve been busy prototyping LinuxKit support for Docker Linux containers on Windows and have a working preview for you to try. This is still a work in progress, and requires either the recently announced “Windows Server Insider” or Windows 10 Insider builds.
UPDATE: LCOW support is available in Windows 10 Fall Creators Update and in Windows Server 1709. The simplest way to try it out on Windows 10 is to install the edge variant of Docker for Windows (details). On Windows Server 1709, install EE preview.
Running Docker Linux Containers on Windows with LinuxKit
The instructions below have been tested on Windows 10 and Windows Server Insider builds 16278 and 16281.
Be sure to install Docker for Windows (Windows 10) or Docker Enterprise Edition (Windows Server Insider) before starting.
Setup Docker and LinuxKit
A preview build of LinuxKit is available by simply running the following commands in PowerShell (with Administrator rights):
Now get a master branch build of the Docker daemon that contains preview support for Linux containers on Windows:
Start a new Docker daemon listening on a separate pipe and using a separate storage location from the default install:
Try it
Run a Linux container:
Docker just launched a minimal VM running a LinuxKit instance hosting the Linux container!
Since this is an early preview there are some limitations, but basic Docker operations like pull and run work.
Looking ahead
Both Windows Server Insider builds and Docker support for Linux containers on Windows are in early preview mode. When GA, Docker Linux containers on Windows will improve the Docker Linux container experience for both Windows developers and server administrators. Developers will be able to more easily build and test mixed Windows/Linux Docker applications by running containers for both platforms side-by-side on the same system.
And IT-admins that prefer Windows will soon be able to easily run (mostly) Linux-only software like HAProxy and Redis on Windows systems by way of Docker Linux containers on Windows. For example, Docker Linux containers on Windows will make setting up Docker Enterprise Edition and Universal Control Plane (which relies on some Linux-only components) on Windows Server much simpler.
We hope this LinuxKit-based walkthrough will set you up to start experimenting. Feedback is always welcome! For general help and getting started with Insider builds use the Windows Feedback Hub (Windows 10), or the Windows Server Insiders Tech Community . For issues with LinuxKit and Docker support for Linux containers on Windows use the Docker for Windows issue tracker on GitHub . And let us know on Twitter if you build something cool!
Источник
Начало работы с удаленными контейнерами Docker в WSL 2
это пошаговое руководство поможет приступить к разработке с помощью удаленных контейнеров, настроив для Windows WSL 2 (подсистема Windows для Linux версии 2).
docker Desktop для Windows предоставляет среду разработки для создания, доставки и запуска приложений пакетных. включив модуль на основе WSL 2, вы можете запускать контейнеры Linux и Windows в docker Desktop на одном компьютере. (для личного использования и малых предприятий вы можете использовать docker Desktop. дополнительные сведения о Pro, команде или ценах на веб-узел dockerсм. на странице «вопросы и ответы» для филиалов).
Общие сведения о контейнерах Docker
Docker — это средство для создания, развертывания и запуска приложений с использованием контейнеров. Контейнеры позволяют разработчикам упаковывать приложения с использованием всех необходимых компонентов (библиотек, платформ, зависимостей и т. п.) и поставлять все это как один пакет. Использование контейнера дает возможность приложению работать одинаково, независимо от настроенных параметров или ранее установленных библиотек на компьютере, где оно запускается, так как он может отличаться от компьютера, который использовался для написания и тестирования кода приложения. Это позволяет разработчикам сосредоточиться на написании кода, не беспокоясь о том, в какой системе он будет выполняться.
Контейнеры Docker похожи на виртуальные машины, но не создают всю виртуальную операционную систему. Вместо этого контейнер Docker позволяет приложению использовать то же ядро Linux, что и система, в которой оно работает. Таким образом пакету приложения требуются только те части, которых еще нет на главном компьютере. В результате размер пакета уменьшается, а производительность увеличивается.
Постоянная доступность, которую обеспечивает использование контейнеров Docker с такими инструментами, как Kubernetes, — еще одна причина популярности контейнеров. Это позволяет создавать несколько версий контейнера приложения в разное время. Вместо того чтобы останавливать всю систему для обновления или обслуживания, каждый контейнер (и определенные микрослужбы) можно заменить на лету. Вы можете подготовить новый контейнер со всеми обновлениями, настроить его для рабочей среды и просто указать новый контейнер после его готовности. Можно также архивировать различные версии вашего приложения, используя контейнеры, и при необходимости поддерживать их работу в качестве резервного ресурса.
Дополнительные сведения см. в разделе Введение в контейнеры DOCKER на Microsoft Learn.
Предварительные требования
- убедитесь, что компьютер работает Windows 10, обновлен до версии 2004, сборки 18362 или более поздней.
- Установите WSL и настройте имя пользователя и пароль для дистрибутива Linux, работающего в WSL 2.
- установите Visual Studio Code(необязательно). Это обеспечит лучшие возможности, включая возможность кодирования и отладки в удаленном контейнере DOCKER и подключения к дистрибутиву Linux.
- установите Терминал Windows(необязательно). Это обеспечит лучшие возможности, включая возможность настройки и открытия нескольких терминалов в одном интерфейсе (включая Ubuntu, Debian, PowerShell, Azure CLI или то, что вы предпочитаете использовать).
- Зарегистрируйте идентификатор DOCKER в DOCKER Hub(необязательно).
WSL может запускать дистрибутивы в режиме WSL версии 1 или WSL 2. Это можно проверить, открыв PowerShell и введя: wsl -l -v . Убедитесь, что дистрибутив настроен на использование WSL 2, введя: wsl —set-version 2 . Замените на имя дистрибутив (например, Ubuntu 18,04).
в WSL версии 1 из-за фундаментальных различий между Windows и Linux подсистема docker не смогла запуститься непосредственно внутри WSL, поэтому группа docker разработала альтернативное решение с использованием виртуальных машин Hyper-V и линукскит. Однако поскольку WSL 2 теперь работает в ядре Linux с полной емкостью системных вызовов, Docker можно полностью запустить в WSL 2. это означает, что контейнеры Linux могут работать изначально без эмуляции, что обеспечивает лучшую производительность и совместимость между средствами Windows и Linux.
Установка Docker Desktop
если серверная часть WSL 2 поддерживается в docker Desktop для Windows, вы можете работать в среде разработки на основе linux и создавать контейнеры на основе linux, используя Visual Studio Code для редактирования кода и отладки и запуска контейнера в Microsoft Edge браузере на Windows.
Чтобы установить DOCKER (после установки WSL), выполните следующие действия.
Скачайте DOCKER Desktop и следуйте инструкциям по установке.
после установки запустите приложение docker Desktop из Windows меню, а затем выберите значок docker в меню «скрытые значки» панели задач. щелкните правой кнопкой мыши значок, чтобы открыть меню команд docker, и выберите «Параметры».
убедитесь, что в Параметры общие установлен флажок «использовать ядро на основе WSL 2» > .
выберите из установленных дистрибутивов WSL 2, для которых вы хотите включить интеграцию с docker, перейдя по: Параметры > ресурсы > WSL integration.
Чтобы убедиться, что DOCKER установлен, откройте дистрибутив WSL (например, Ubuntu) и отобразите версию и номер сборки, введя следующее: docker —version
Проверьте, правильно ли работает установка, выполнив простой встроенный образ DOCKER с помощью: docker run hello-world
Вот несколько полезных команд DOCKER для получения сведений:
- Перечислить команды, доступные в интерфейсе командной строки Docker, можно, выполнив команду docker .
- Просмотреть сведения о конкретной команде можно, выполнив команду docker —help .
- Перечислить образы Docker на вашем компьютере (сейчас только образ Hello-World) можно, используя следующие команды docker image ls —all .
- Перечислите контейнеры на компьютере с помощью: docker container ls —all или docker ps -a (без флага Показать все, будут отображаться только выполняющиеся контейнеры).
- Перечислите системную информацию об установке DOCKER, включая статистику и ресурсы (память ЦП &), доступные в контексте WSL 2, с помощью: docker info
Разработка в удаленных контейнерах с помощью VS Code
чтобы приступить к разработке приложений с помощью docker с WSL 2, мы рекомендуем использовать VS Code, а также расширение Remote-WSL и расширение docker.
установите VS Code расширение Remote-WSL. это расширение позволяет открыть проект Linux, работающий на WSL, в VS Code (не нужно беспокоиться о проблемах с путями, двоичной совместимости или других задачах, связанных с разными операционными системами).
Установите расширение VS code Remote-Containers. это расширение позволяет открыть папку проекта или репозиторий в контейнере, используя преимущества полного набора функций Visual Studio Code для выполнения разработки в контейнере.
установите VS Code расширение docker. Это расширение добавляет функциональные возможности для создания и развертывания контейнерных приложений, а также управления ими в VS Code. (Для фактического использования контейнера в качестве среды разработки требуется расширение Remote-Container.)
Давайте создадим контейнер разработки для существующего проекта приложения с помощью DOCKER.
В этом примере я использую исходный код из руководства по Hello World Django в среде разработки Python Настройка документов. Этот шаг можно пропустить, если вы предпочитаете использовать собственный исходный код проекта. чтобы скачать веб-приложение HelloWorld-Django из GitHub, откройте терминал WSL (например, Ubuntu) и введите: git clone https://github.com/mattwojo/helloworld-django.git
Всегда храните код в той же файловой системе, в которой вы используете средства. Это приведет к повышению производительности доступа к файлам. В этом примере мы используем Linux дистрибутив (Ubuntu) и хотим сохранить файлы проекта в файловой системе WSL \\wsl\ . хранение файлов проекта в Windowsной файловой системе значительно замедляет работу при использовании средств Linux в WSL для доступа к этим файлам.
В терминале WSL измените каталоги на папку исходного кода для этого проекта:
откройте проект в VS Code, работающем на локальном сервере расширений Remote-WSL, введя следующее:
убедитесь, что вы подключены к WSL Linux дистрибутив, проверив зеленый индикатор зеленого цвета в левом нижнем углу экземпляра VS Code.
в VS Code команде паллетте (Ctrl + Shift + P) введите: Remote-containers: Open Folder in контейнер. Если эта команда не отображается при вводе, убедитесь, что вы установили расширение удаленного контейнера, связанное выше.
Выберите папку проекта, которую вы хотите контейнеризовать. В моем случае это \\wsl\Ubuntu-20.04\home\mattwojo\repos\helloworld-django\
Появится список определений контейнеров, так как в папке проекта (репозитории) еще нет конфигурации Девконтаинер. Список отображаемых определений конфигурации контейнера фильтруется на основе типа проекта. Для моего проекта Django я выберу Python 3.
откроется новый экземпляр VS Code, начнется создание нового образа и после завершения сборки будет запущен наш контейнер. Вы увидите, что новая .devcontainer Папка содержит сведения о конфигурации контейнера в Dockerfile devcontainer.json файле и.
чтобы убедиться, что проект по-прежнему подключен к WSL и в контейнере, откройте VS Code интегрированный терминал (Ctrl + Shift +
). Проверьте операционную систему, введя: uname и версию Python с: python3 —version . Вы видите, что uname возвращено как Linux, поэтому вы все еще подключены к подсистеме WSL 2, а номер версии Python будет основан на конфигурации контейнера, которая может отличаться от версии Python, установленной в дистрибутиве WSL.
чтобы запустить и выполнить отладку приложения в контейнере с помощью Visual Studio Code, сначала откройте меню выполнить (Ctrl + Shift + D или выберите вкладку в левой строке меню). Затем выберите Запуск и отладка , чтобы выбрать конфигурацию отладки и выбрать конфигурацию, наиболее подходящую для вашего проекта (в нашем примере это будет «Django»). При этом launch.json в папке проекта будет создан файл .vscode с инструкциями по запуску приложения.
в VS Code выберите запустить > отладку запуска (или просто нажмите клавишу F5 ). при этом откроется окно терминала в VS Code. результат должен выглядеть следующим образом: «запуск сервера разработки при http://127.0.0.1:8000/ выходе из системы на сервере с помощью CONTROL-C». Удерживайте нажатой клавишу CTRL и выберите отображаемый адрес, чтобы открыть приложение в веб-браузере по умолчанию и просмотреть проект, работающий в контейнере.
Вы успешно настроили удаленный контейнер разработки с помощью DOCKER Desktop, на базе серверной части WSL 2, который можно использовать для кодирования, сборки, запуска, развертывания или отладки с помощью VS Code!
Устранение неполадок
Нерекомендуемый контекст DOCKER WSL
Если вы использовали предварительную ознакомительную версию DOCKER для WSL, возможно, у вас есть контекст DOCKER с именем «WSL», который теперь устарел и больше не используется. Можно проверить с помощью команды: docker context ls . вы можете удалить контекст «wsl», чтобы избежать ошибок с помощью команды: docker context rm wsl так, как вы хотите использовать контекст по умолчанию как для Windows, так и для WSL2.
Возможные ошибки, которые могут возникнуть при работе с этим нерекомендуемым контекстом WSL, включают: docker wsl open //./pipe/docker_wsl: The system cannot find the file specified. или error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_wsl/v1.40/images/json?all=1: open //./pipe/docker_wsl: The system cannot find the file specified.
Не удается найти папку хранилища образов DOCKER
DOCKER создает две папки дистрибутив для хранения данных:
- \WSL $ \доккер-десктоп
- \WSL $ \доккер-десктоп-Дата
эти папки можно найти, открыв дистрибутив WSL Linux и введя: explorer.exe . для просмотра папки в Windows проводнике. Введите: \\wsl\ \mnt\wsl замените именем вашего распространения (IE. Ubuntu-20,04) для просмотра этих папок.
Дополнительные сведения о поиске расположений хранилищ DOCKER в WSL см. в этой статье из РЕПОЗИТОРИЯ WSL или этой стакковерлов записи.
Дополнительные сведения об устранении общих проблем в WSL см. в документации по устранению неполадок .
Источник