Docker desktop linux container

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 на Windows Subsystem for Linux (WSL)

Для полноценной работы с проектом на docker’е в WSL необходима установка WSL 2. На момент написания заметки ее использование возможно только в рамках участия в программе предварительной оценки Windows (WSL 2 доступна в сборках 18932 и выше). Так же отдельно стоит упомянуть, что необходима версия Windows 10 Pro для установки и настройки Docker Desktop.

Важно! В WSL 2 пропала острая необходимость в Docker Desktop для Windows 10. Как обходиться без него описано в пункте Про Docker в Ubuntu.

Первые шаги

После вступления в программу предварительной оценки и установки обновлений необходимо установить дистрибутив Linux (в данном примере используется Ubuntu 18.04) и Docker Desktop с WSL 2 Tech Preview:

В обоих пунктах следуем всем инструкциям по установке и настройке.

Установка дистрибутива Ubuntu 18.04

Перед запуском Ubuntu 18.04 необходимо включить Windows WSL и Windows Virtual Machine Platform посредством выполнения двух команд в PowerShell:

  1. Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux (потребует перезагрузку компьютера)
  2. Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
Читайте также:  Icp con 7561 драйвер windows

После необходимо удостовериться, что мы будем использовать WSL v2. Для этого в терминале WSL или PowerShell последовательно выполняем команды:

  • wsl -l -v — смотрим, какая версия установлена в данный момент. Если 1, то движемся далее по списку
  • wsl —set-version ubuntu 18.04 2 — для обновления до версии 2
  • wsl -s ubuntu 18.04 — устанавливаем Ubuntu 18.04 в качестве дистрибутива по-умолчанию

Теперь можно запустить Ubuntu 18.04, провести настройку (указать имя пользователя и пароль).

Установка Docker Desktop

Важно! В WSL 2 пропала острая необходимость в Docker Desktop для Windows 10. Как обходиться без него описано в пункте Про Docker в Ubuntu.

В процессе установки следуем указаниям. Компьютер потребует перезапуск после установки и при первом запуске для включения Hyper-V (из-за поддержки которого и требуется версия Windows 10 Pro).

Важно! Если Docker Desktop сообщит о блокировке со стороны firewall’а, идем в настройки антивируса и вносим следующие изменения в правила сетевого экрана (в данном примере в качестве антивируса используется Kaspersky Total Security):

  • Проходим в Настройки -> Защита -> Сетевой экран -> Настроить пакетные правила -> Local Service (TCP) -> Изменить
  • Из списка локальных портов удаляем порт 445
  • Сохранить

После запуска Docker Desktop в его контекстном меню выбираем пункт WSL 2 Tech Preview.

В открывшемся окне нажимаем кнопку Start.

Теперь docker и docker-compose доступны внутри дистрибутива WSL.

Важно! В обновленном Docker Desktop теперь вкладка с WSL внутри окна настроек. Там включается поддержка WSL.

Важно! Помимо галочки активации WSL также необходимо в вкладке Resources->WSL Integration активировать Ваш WSL дистрибутив.

Запуск

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

Ошибки различного рода, связанные с запуском bash-скриптов (которые как правило стартуют при сборке контейнеров для установки необходимых библиотек и дистрибутивов) и прочих, обычных для разработки на Linux, вещей, заставили задуматься о размещении проектов непосредственно в директории пользователя Ubuntu 18.04.

Из решения предыдущей проблемы вытекает следующая: как работать с файлами проекта через IDE, установленную на Windows. В качестве «best practice» я нашел для себя только один вариант — работа посредством VSCode (хотя являюсь поклонником PhpStorm).

После скачивания и установки VSCode обязательно устанавливаем в расширение Remote Development extension pack.

После установки выше упомянутого расширения достаточно просто выполнить команду code . в директории проекта при запущенной VSCode.

В данном примере для обращения к контейнерам через браузер необходим nginx. Установить его через sudo apt-get install nginx оказалось не так просто. Для начала потребовалось обновить дистрибутив WSL посредством выполнения sudo apt update && sudo apt dist-upgrade , и только после этого запустить установку nginx.

Важно! Все локальные домены прописываются не в файле /etc/hosts дистрибутива Linux (его там даже нет), а в файле hosts (обычно расположенном C:\Windows\System32\drivers\etc\hosts) Windows 10.

Про Docker в Ubuntu

Как подсказали знающие пользователи в комментариях к заметке, docker внутри дистрибутива WSL 2 абсолютно работоспособен. Это позволяет не устанавливать Docker Desktop на Windows 10 и решает проблему с наличием версии Windows 10 Pro (необходимость в Pro возникает именно в связи с использованием Docker Desktop). Устанавливается согласно инструкциям с родного сайта:

Если при выполнении команды docker начнет ругаться на демона, проверьте статус сервиса — в моем случае как и nginx он не запускается автоматически. Запустите его командой sudo service docker start .

Если в момент сборки вывалится ошибка «Service failed to build: cgroups: cannot find cgroup mount destination: unknown» попробуйте следующее решение (не мое, найдено мною, ссылка в источниках): sudo mkdir /sys/fs/cgroup/systemd ; sudo mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd .

Работа с проектом через PhpStorm

Чтобы обеспечить возможность работы с проектом в WSL через PhpStorm, необходимо сделать следующее:

  • Запускаем командную строку Windows 10 от имени администратора;
  • В командной строке Windows 10 выполняем команду mklink /D C:\project_directory \\wsl$\Ubuntu\home\user\project_directory , которая создаст символьную ссылку на папку проекта.

После этого в IDE можно открыть проект по пути C:\project_directory

P.S. Дмитрий Симагин, спасибо за решение.

Источники

Более подробное описание каждого шага можно найти тут:

Источник

Начало работы с удаленными контейнерами Docker в WSL 2

это пошаговое руководство поможет приступить к разработке с помощью удаленных контейнеров, настроив для Windows WSL 2 (подсистема Windows для Linux версии 2).

docker Desktop для Windows предоставляет среду разработки для создания, доставки и запуска приложений пакетных. включив модуль на основе WSL 2, вы можете запускать контейнеры Linux и Windows в docker Desktop на одном компьютере. (для личного использования и малых предприятий вы можете использовать docker Desktop. дополнительные сведения о Pro, команде или ценах на веб-узел dockerсм. на странице «вопросы и ответы» для филиалов).

Общие сведения о контейнерах Docker

Docker — это средство для создания, развертывания и запуска приложений с использованием контейнеров. Контейнеры позволяют разработчикам упаковывать приложения с использованием всех необходимых компонентов (библиотек, платформ, зависимостей и т. п.) и поставлять все это как один пакет. Использование контейнера дает возможность приложению работать одинаково, независимо от настроенных параметров или ранее установленных библиотек на компьютере, где оно запускается, так как он может отличаться от компьютера, который использовался для написания и тестирования кода приложения. Это позволяет разработчикам сосредоточиться на написании кода, не беспокоясь о том, в какой системе он будет выполняться.

Читайте также:  Темы для телефонов windows

Контейнеры 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 (не нужно беспокоиться о проблемах с путями, двоичной совместимости или других задачах, связанных с разными операционными системами).

Читайте также:  Как сменить язык операционной системы windows 10

Установите расширение 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 см. в документации по устранению неполадок .

Источник

Оцените статью