Запуск Docker в среде Windows/cygwin

Запуск Docker в среде Windows/cygwin

Я не уверен, что это подходящее сообщество, чтобы спросить о моей проблеме, так как я на самом деле пытаюсь запустить dockerв cygwinсреде на windows. После установки Docker Toolbox я пытаюсь запустить docker versionв своей оболочке cygwin и получаю:

$ docker version
Could not read CA certificate "\\cygdrive\\c\\Users\\Alexey\\.docker\\machine\\machines\\default\\ca.pem": open \cygdrive\c\Users\Alexey\.docker\machine\machines\default\ca.pem: The system cannot find the path specified.

Однако, сам файл /cygdrive/c/Users/Alexey/.docker/machine/machines/default/ca.pem есть, проблема, похоже, в неправильных слешах (windows vs UNIX) в пути к файлу сертификата. Но я не могу понять, где это исправить.

Вот переменные env, заданные в ~/.bash_profile:

export DOCKER_HOST=tcp://192.168.99.100:2376
export DOCKER_MACHINE_NAME=default
export DOCKER_TLS_VERIFY=1
export DOCKER_CERT_PATH=/cygdrive/c/Users/Alexey/.docker/machine/machines/default
export TERM=cygwin

ОБНОВЛЯТЬ

Alexey@Alexey-PC ~
$ echo $DOCKER_CERT_PATH
/cygdrive/c/Users/Alexey/.docker/machine/machines/default/

Alexey@Alexey-PC ~
$ docker version
Could not read CA certificate "\\cygdrive\\c\\Users\\Alexey\\.docker\\machine\\machines\\default\\ca.pem": open \cygdrive\c\Users\Alexey\.docker\machine\machines\default\ca.pem: The system cannot find the path specified.

РЕШЕНИЕкак предложил ниже @cloverhap, нам нужно задать DOCKER_CERT_PATHпеременную окружения, но она должна содержать путь к Windows, а не к Cygwin, и, кроме того, обратные косые черты должны быть экранированы, поэтому решение состоит в том, чтобы добавить это:

export DOCKER_CERT_PATH=C:\\Users\\%USERNAME%\\.docker\\machine\\machines\\default

к.bash_profile

решение1

В моей среде Cygwin путь к сертификату Docker на самом деле установлен, как показано ниже, и Docker, похоже, работает нормально.

DOCKER_CERT_PATH=C:\Users\user\.docker\machine\machines\default

Следующее действительно приводит к ошибке

DOCKER_CERT_PATH=/cygdrive/c/Users/user/.docker/machine/machines/default
$ docker version
Could not read CA certificate "\\cygdrive\\c\\Users\\user\\.docker\\machine\\machines\\default\\ca.pem": open \cygdrive\c\Users\user\.docker\machine\machines\default\ca.pem: The system cannot find the path specified.

Поэтому попробуйте изменить DOCKER_CERT_PATH на обычный формат пути Windows.

export DOCKER_CERT_PATH=C:\\Users\\Alexey\\.docker\\machine\\machines\\default

Моя версия докера — 1.10.1, если результаты отличаются.

решение2

У меня была та же проблема, а потом я понял, что когда я установил Docker на свою систему Windows 10, программа под названием«Терминал быстрого запуска Docker»был установлен. Если вы запустите его, то получите оболочку bash, и вы сможете запустить команду docker в этом терминале. Это может быть не bash Cygwin, но что с того?

введите описание изображения здесь

Это запускает это…

введите описание изображения здесь

решение3

Ни одно из указанных здесь решений не сработало для меня. Я обнаружил, что даже при использовании Cywin необходимо настроить прокси в GUI Docker Desktop: введите описание изображения здесь

После этого я смог запустить:

$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pulling fs layer
1b930d010525: Verifying Checksum
1b930d010525: Download complete
1b930d010525: Pull complete
Digest: sha256:2557e3c07ed1e38f26e389462d03ed943586f744621577a99efb77324b0fe535
Status: Downloaded newer image for hello-world:latest

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

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

Связанный контент