Executando o Docker no ambiente Windows/cygwin

Executando o Docker no ambiente Windows/cygwin

Não tenho certeza se esta é a comunidade certa para perguntar sobre meu problema, pois estou tentando lançar dockerno cygwinambiente windows. Após a instalação do Docker Toolbox, estou tentando iniciar docker versionmeu shell cygwin e obter:

$ 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.

No entanto, o arquivo real /cygdrive/c/Users/Alexey/.docker/machine/machines/default/ca.pem está lá, o problema parece estar em barras erradas (Windows vs UNIX) no caminho para o arquivo de certificado. Mas não consigo descobrir onde consertar isso.

Aqui estão as variáveis ​​​​env definidas em ~/.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

ATUALIZAR

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.

SOLUÇÃOconforme proposto abaixo por @cloverhap, precisamos definir DOCKER_CERT_PATHa variável de ambiente, mas ela deve conter o caminho do Windows, não o cygwin e, além disso, as barras invertidas devem ter escape, então a solução é adicionar isto:

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

para.bash_profile

Responder1

No meu ambiente cygwin, o caminho do certificado do docker está definido como abaixo e o docker parece funcionar bem.

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

O seguinte realmente dá um erro

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.

Portanto, tente alterar seu DOCKER_CERT_PATH para o formato de caminho normal do Windows.

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

Minha versão do docker é 1.10.1, se os resultados forem diferentes.

Responder2

Eu tive o mesmo problema, então percebi que quando instalei o docker no meu sistema Windows 10, um programa chamado"Terminal de início rápido do Docker"foi instalado. Se você executar isso, fornecerá um shell bash e poderá executar o comando docker nesse terminal. Pode não ser a festa do Cygwin, mas e daí?

insira a descrição da imagem aqui

Isso lança isso ...

insira a descrição da imagem aqui

Responder3

Nenhuma das soluções indicadas aqui funcionou para mim. Descobri que mesmo usando o Cywin, é necessário configurar o proxy na GUI do Docker Desktop: insira a descrição da imagem aqui

Depois disso consegui executar:

$ 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/

informação relacionada