Не удается подключиться к демону Docker в bash на окнах Ubuntu

Я могу установить docker, docker-compose и docker-machine

Однако, когда я пытаюсь запустить

[email protected]:~# docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

Есть ли какие-либо предложения по решению этой проблемы?

Ответ 1

Нашел решение по этому посту: https://blog.jayway.com/2017/04/19/running-docker-on-bash-on-windows/

На самом деле запустить Docker на другом компьютере довольно просто, так как Docker может предоставить конечную точку TCP, к которой может подключиться CLI.

Эта конечная точка TCP отключена по умолчанию; чтобы активировать его, щелкните правой кнопкой мыши значок Docker на панели задач и выберите "Настройки" и установите флажок "Демон Expose на tcp://localhost: 2375 без TLS".

После этого все, что нам нужно сделать, это указать CLI в Bash для подключения к движку, работающему под Windows, а не к несуществующему движку, работающему под Bash, например:

$ docker -H tcp://0.0.0.0:2375 images

Есть два способа сделать это постоянным - либо добавить псевдоним для вышеуказанной команды, либо экспортировать переменную окружения, которая указывает Docker, где найти движок хоста (ПРИМЕЧАНИЕ: обязательно используйте один апостроф ниже):

$ echo "export DOCKER_HOST='tcp://0.0.0.0:2375'" >> ~/.bashrc
$ source ~/.bashrc

Теперь запуск команд Docker из Bash работает точно так же, как и предполагалось.

$ docker run hello-world

Успешный ответ:

Hello from Docker!This message shows that your installation appears to be working correctly.

Ответ 2

Примечание. Если вы используете Ubuntu из WSL (Подсистема Windows для Linux), имейте в виду, что работает докер-клиент, а не док-сервер (демон).

См. выпуск Microsoft/WSL 2114 и эту тему.

Для сервера вам все равно нужно будет использовать только Docker для Windows и его виртуальную машину Hyper-V.

Затем Microsoft/WSL выпуск 2102 добавляет:

Я смог заставить работать TLS из WSL, изменив переменную среды DOCKER_CERT_PATH (которую я получил от запуска eval $(docker-machine.exe env --shell bash)) с "C:\C:\Users\mmarchini\.docker\machine\machines\default" на "/mnt/c/Users/mmarchini/.docker/machine/machines/default/".
По крайней мере, сборка докера сейчас работает, я попробую использовать docker-compose позже.

Смотрите этот сценарий (от Матеуса Марчини), чтобы запустить bash док-машины с правильной настройкой:

#!/usr/bin/env python3

from subprocess import run, PIPE

completed_process = run(["docker-machine.exe", "env", "--shell", "bash"], stdout=PIPE)

docker_env = completed_process.stdout.decode("ascii")

for line in docker_env.split("\n"):
    if "DOCKER_CERT_PATH" in line:
        env_var, path, _ = line.split('"')
        path = path.replace("\\", "/")
        drive, path = path.split(":", 1)
        path = "/mnt/{}{}".format(drive.lower(), path)
        line = '{}"{}"'.format(env_var, path)
print(line)

Ответ 3

Клиент и сервер Docker теперь можно устанавливать и запускать исключительно в WSL без Docker Desktop для Windows, если вы используете Windows 10 версии 1803 или выше. У меня это работает на следующем WSL:

OS: Ubuntu 18.04 bionic [Ubuntu on Windows 10]
Kernel: x86_64 Linux 4.4.0-17763-Microsoft

Просто следуйте тем же инструкциям для установки в Ubuntu, но не забудьте выбрать конкретную версию для установки. В настоящее время версия 18.06.1 ~ ce ~ 3-0 ~ ubuntu работает нормально, но более поздние версии до 5: 18.09.6 ~ 3-0 ~ ubuntu-bionic имеют проблемы с запуском контейнера. Следующая команда установит последнюю рабочую версию:

apt-get install docker-ce=18.06.1~ce~3-0~ubuntu

Чтобы запустить сервер Docker в WSL после установки, закройте все открытые терминалы и запустите новый терминал Ubuntu от имени администратора (т.е. Щелкните правой кнопкой мыши ярлык Ubuntu и выберите "Запуск от имени администратора"). Наконец, выполните следующие команды:

sudo cgroupfs-mount
sudo service docker start

sudo service docker start нужно будет запускать каждый раз при перезагрузке Windows. Однако, если вы хотите избежать этого, вы можете автоматизировать его с помощью планировщика задач и сценария оболочки, выполнив шаги, перечисленные здесь.

Проверьте, что все работает, используя:

docker run hello-world

Ссылка: https://medium.com/faun/docker-running-seamlessly-in-windows-subsystem-linux-6ef8412377aa

Ответ 4

для меня это работает для WSL для Windows:

  • 1> перейти: включить или выключить функции Windows
  • 2> отмените выбор "Hyper-V", перезапустите,
  • 3> снова перейдите к разделу "Включение или отключение функций Windows",
  • 4> снова выберите "Hyper-V"
  • и перезагрузите в последний раз. После этого докер снова был доступен.

при условии, что вы установили рабочий стол Docker для Windows и Settings-> General-> Expose daemon на tcp://localhost: 2375 без TLS отмечен