Можете ли вы запустить Docker изначально в новом пользовательском пространстве Windows 10 (Ubuntu) bash?

Вы можете использовать Docker Desktop для Windows в качестве движка и Docker для Linux в качестве клиента в WSL на Ubuntu / Debian в Windows. Соедините их через TCP.

Установите Docker Desktop для Windows: https://hub.docker.com/editions/community/docker-ce-desktop-windowsЕсли вы хотите использовать контейнеры Windows вместо контейнеров Linux, контейнерами обоих типов может управлять клиент Linux docker в пользовательском пространстве bash.

Начиная с версии 17.03.1-ce-win12 (12058) вы должны проверить Выставить демона на tcp://localhost:2375 без TLS чтобы позволить клиенту Linux Docker продолжать взаимодействовать с демоном Windows Docker по протоколу TCP

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

cdwget https://download.docker.com/linux/static/stable/`uname -m`/docker-19.03.1.tgztar -xzvf docker-*.tgzcd docker./docker -H tcp://0.0.0.0:2375 ps

или

env DOCKER_HOST=tcp://0.0.0.0:2375 ./docker ps

Чтобы сделать это постоянным:

mkdir ~/binmv ~/docker/docker ~/bin

Добавьте соответствующие переменные в файл .bashrc

export DOCKER_HOST=tcp://0.0.0.0:2375export PATH=$PATH:~/bin

Конечно, вы можете установить docker-compose

sudo -icurl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose

Или с помощью python pip

sudo apt-get install python-pip bash-completionsudo pip install docker-compose

И завершение Bash. Лучшая часть:

sudo -iapt-get install bash-completioncurl -L https://raw.githubusercontent.com/docker/docker-ce/master/components/cli/contrib/completion/bash/docker > /etc/bash_completion.d/dockercurl -L https://raw.githubusercontent.com/docker/compose/$(docker-compose version --short)/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

Я протестировал его, используя версию Docker Desktop 2.1.0.1 (37199) с использованием Hyper-V:

$ docker versionClient: Docker Engine - Community Version:           19.03.1 API version:       1.40 Go version:        go1.12.5 Git commit:        74b1e89e8a Built:             Thu Jul 25 21:17:37 2019 OS/Arch:           linux/amd64 Experimental:      falseServer: Docker Engine - Community Engine:  Version:          19.03.1  API version:      1.40 (minimum version 1.12)  Go version:       go1.12.5  Git commit:       74b1e89  Built:            Thu Jul 25 21:17:52 2019  OS/Arch:          linux/amd64  Experimental:     false containerd:  Version:          v1.2.6  GitCommit:        894b81a4b802e4eb2a91d1ce216b8817763c29fb runc:  Version:          1.0.0-rc8  GitCommit:        425e105d5a03fabd737a126ad93d62a9eeede87f docker-init:  Version:          0.18.0  GitCommit:        fec3683Look both client and server say **OS/Arch: linux/amd64**

Тома

Будьте осторожны при добавлении томов. Путь C:\dir будет виден как /mnt/c/dir на WSL и как /c/dir/ с помощью docker engine. Вы можете преодолеть это навсегда:

sudo bash -c "echo -e '[automount] \nroot = /'>/etc/wsl.conf"

Вы должны выйти и перезагрузить WSL после внесения изменений в wsl.conf, чтобы WSL считывал ваши изменения при запуске.

ОБНОВЛЕНИЕ

от: Что нового для командной строки в Windows 10 версии 1803

Сокеты Unix Сокеты Unix не поддерживались в Windows, а теперь они поддерживаются! Вы также можете обмениваться данными через сокеты Unix между Windows и WSL. Одна из замечательных особенностей этого заключается в том, что он позволяет WSL запускать клиент Linux Docker для взаимодействия с демоном Docker, работающим в Windows.

ОБНОВЛЕНИЕ

Этот сценарий и использование сокетов Unix были включены в Пенгвинэто настройка pengwin.

С уважением