Не удается подключиться к демону 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 отмечен