Исходные данные:
Использовать клиент Docker из WSL (Windows Subsystem for Linux) для работы с сервером Docker в Windows.
Решение:
- Microsoft Windows [10.0.15063] (Windows 10 Creators Update);
- Docker Toolbox (17.03.1-ce);
- VirtualBox [5.1.18 r114002 (Qt5.6.2)] (поставлялся вместе в Docker Toolbox);
- Windows Subsystem for Linux (Ubuntu 16.04).
Использовать клиент Docker из WSL (Windows Subsystem for Linux) для работы с сервером Docker в Windows.
Решение:
- Чтобы успешно работали `volumes`, нужно для каждой виртуальной машины Docker в Windows настроить общие папки для WSL. Например:
- Путь к папке: `C:\Users`
- Имя папки: `/mnt/c/Users`
- Установить Docker в WSL:
# Set up the repository sudo apt-get -y install \ apt-transport-https \ ca-certificates \ curl curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
sudo apt-get update # Get Docker CE
sudo apt-get -y install docker-ce
- В WSL направить клиента на сервер Docker в Windows (нужно выполнять каждый раз, когда запускается виртуальная машина (сразу после запуска)):
# ---- docker_load_env.sh ---- #
#!/bin/bash # Использование: source docker_load_env.sh [docker_machine_name="docker-default"] docker_machine_name=${1:-"docker-default"} # Все виртуальные машины VirtualBox в Docker требуют TLS export DOCKER_TLS_VERIFY="1" echo "DOCKER_TLS_VERIFY=$DOCKER_TLS_VERIFY" export DOCKER_HOST="$(cmd.exe /C "docker-machine url $docker_machine_name")" echo "DOCKER_HOST=$DOCKER_HOST" export DOCKER_CERT_PATH="$(cmd.exe /C "docker-machine inspect $docker_machine_name --format="{{.HostOptions.AuthOptions.CertDir}}"" | sed -e 's/\\/\//g' -e 's/\([A-Z]\):/\/mnt\/\L\1/')" echo "DOCKER_CERT_PATH=$DOCKER_CERT_PATH" - Готово