Вопрос:

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

bash docker windows-subsystem-for-linux

14781 просмотра

3 ответа

869 Репутация автора

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

Однако, когда я пытаюсь бежать

root@DESKTOP-51NFMIM:~# docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

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

Автор: zsbappa Источник Размещён: 01.01.2018 07:09

Ответы (3)


4 плюса

876586 Репутация автора

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

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

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

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

Я смог заставить 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)
Автор: VonC Размещён: 01.01.2018 07:19

21 плюса

4371 Репутация автора

Нашел решение по этому посту: 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

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

$ docker run hello-world

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

Hello from Docker!This message shows that your installation appears to be working correctly.
Автор: Rami Sarieddine Размещён: 29.01.2018 12:17

2 плюса

61 Репутация автора

Клиент и сервер 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

Автор: Stephan Размещён: 09.05.2019 01:57
Вопросы из категории :
32x32