Подтвердить что ты не робот

Ошибка проверки соединения TLS: проверка ошибок и/или восстановление сертификатов

После перезагрузки моих окон я не могу подключиться к машине докеров, работающей в Oracle Virtual Box. Когда я запускаю Docker QuickStart Terminal, каждая вещь выглядит прекрасно, она подходит ОК, и это дает мне это сообщение:

docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com

но когда я делаю:

$ docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL   SWARM   DOCKER   ERRORS
default   -        virtualbox   Timeout

и

λ docker images
An error occurred trying to connect: Get http://localhost:2375/v1.21/images/json: dial tcp 127.0.0.1:2375: ConnectEx tcp: No connection could be made because the target machine actively refused it.

также, когда я пытаюсь повторно инициализировать мой env., я получаю:

λ docker-machine env default
Error checking TLS connection: Error checking and/or regenerating the certs: There was an error validating certificates for host "192.168.99.100:2376": dial tcp 192.168.99.100:2376: i/o timeout
You can attempt to regenerate them using 'docker-machine regenerate-certs [name]'.
Be advised that this will trigger a Docker daemon restart which will stop running containers.

BTW, Регенерирующие сертификаты также не помогают. Любая идея?

Спасибо.

4b9b3361

Ответ 1

После ряда исследований выяснилось, что решение проблемы на данный момент может решить проблему:

  • Открыть Центр управления сетями и общим доступом

  • Нажмите "Изменить настройку адаптера"

  • Посмотрите, есть ли у вас активированные адаптеры, такие как сетевые адаптеры VPN или VM Ware.

  • Попробуйте отключить их и попытаться подключиться к контейнеру еще раз

  • Если это не сработало, когда у вас отключены другие адаптеры, перезагрузите компьютер - в моем случае это сработало для меня.

Ответ 2

Попробуйте восстановить сертификаты вручную:

docker-machine --debug regenerate-certs -f default

и проверьте наличие ошибок, затем повторите попытку:

docker-machine --debug env default

Если он не работает в ssh, скопируйте и вставьте эту команду в терминал, чтобы узнать, в чем проблема, добавив дополнительные -vv.

Если у вас есть:

debug1: подключиться к адресу 127.0.0.1 порт 64368: соединение отклонено

тогда ваш компьютер не будет работать (проверьте docker-machine ls), поэтому попробуйте:

docker-machine start

Затем попробуйте ssh с помощью:

docker-machine -D ssh default

Ответ 3

Это сработало для меня:

  • Удалены все интерфейсы только хоста из моего виртуального бокса (VirtualBox = > Настройки = > Сеть = > Сети только для хоста).
  • rmdir.exe --ignore-fail-on-non-empty ~/.docker/
  • docker-machine start
  • docker-machine env
  • eval $("C:\Program Files\Docker Toolbox\docker-machine.exe" env default) (добавлен также в конце моего .bash_profile.
  • docker run hello-world < - now rorking

Вдохновленный здесь.

Ответ 4

Вот что сработало для меня. Первые шаги похожи на то, что предложил Хажир, а затем регенерировать сертификаты.

  • Открыть центр обмена и совместного доступа.
  • Нажмите "Изменить настройку адаптера".
  • Отключите все активные сетевые адаптеры VMWare. Обычно имеет объяснение "VirtualBox Host-Only Ethernet Adapter".
  • Подключитесь к своему контейнеру, запустив docker-machine start.
  • Запустите docker-machine env. Если вы похожи на меня, вы получите следующую ошибку:

Проверка ошибок подключения TLS: проверка ошибок и/или восстановление certs: произошла ошибка проверки сертификатов для хоста "192.168.99.100:2376": x509: сертификат действителен для 192.168.99.101, не 192.168.99.100

Это хорошо. Теперь все, что нам нужно сделать, - запустить

docker-machine regenerate-certs -f default

Затем снова проверьте его с помощью docker-machine env. Если вы получите:

SET DOCKER_TLS_VERIFY=1
SET DOCKER_HOST=tcp://192.168.99.100:2376
SET DOCKER_CERT_PATH=C:\Users\Jay\.docker\machine\machines\default
SET DOCKER_MACHINE_NAME=default
REM Run this command to configure your shell:
REM     FOR /f "tokens=*" %i IN ('docker-machine env') DO %i

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

Ответ 5

У меня тоже есть эта проблема. Выполнение docker-machine regenerate-certs <vm-name> не может решить проблему. Я искал Google информацию об ошибке и нашел решение ниже.

  • выполнить sudo ifconfig vboxnet0 up в терминале.
  • показать состояние докерной машины: docker-machine ls.
  • теперь STATE и URL в порядке.

Но перезапустите систему, эта проблема сохраняется.

ссылка GitHub, которую я нашел здесь.

Кажется, в VirtualBox 5.1.24 есть ошибка .

Ответ 6

Как я могу обеспечить подключение к моим докерным машинам, назначить им фиксированный IP (и регенерировать сертификаты только один раз) (перезагрузка не требуется)

После этого docker-machine ls всегда работает.

Мой текущий script:
(замените %PRGS%\dm\latest на путь, на котором docker-machine.exe находится на вашей машине)
(убедитесь, что PATH включает last/path/to/git/usr/bin, поскольку команды, такие как ssh, будут доступны)

> more dmvbf.bat
@echo off
setlocal enabledelayedexpansion
set machine=%1
if "%machine%" == "" (
        echo dmvbf expects a machine name
        exit /b 1
)
set ipx=%2
if "%ipx%" == "" (
        echo dmvbf x missing ^(for 192.168.x.y^)
        exit /b 2
)
set ipy=%3
if "%ipy%" == "" (
        echo dmvbf y missing ^(for 192.168.x.y^)
        exit /b 3
)

%PRGS%\dm\latest\docker-machine.exe ssh %machine% "sudo sh -c 'echo \"kill \$(more /var/run/udhcpc.eth1.pid)\" | sudo tee /var/lib/boot2docker/bootsync.sh >/dev/null'"
%PRGS%\dm\latest\docker-machine ssh %machine% "sudo sh -c 'echo \"ifconfig eth1 192.168.%ipx%.%ipy% netmask 255.255.255.0 broadcast 192.168.%ipx%.255 up\" | sudo tee -a /var/lib/boot2docker/bootsync.sh >/dev/null'"

%PRGS%\dm\latest\docker-machine ssh %machine% "sudo chmod 755 /var/lib/boot2docker/bootsync.sh"

%PRGS%\dm\latest\docker-machine ssh %machine% "sudo cat /var/run/udhcpc.eth1.pid | xargs sudo kill"

%PRGS%\dm\latest\docker-machine ssh %machine% "sudo ifconfig eth1 192.168.%ipx%.%ipy% netmask 255.255.255.0 broadcast 192.168.%ipx%.255 up"

Например:

dmvbf default 99 100
docker-machine regenerate-certs -f default

Это назначит 192.168.99.100 машине-докере "default" и один раз восстановит сертификаты.
Затем каждый раз, когда вызывается docker-machine ls, он отображает тот же IP для "default".

Ответ 7

Попробуйте этот способ/обходной путь:

  • сначала убедитесь, что есть ca.pem, cert.pem, key.pem, ca-key.pem в папке $yourhome/.docker/machine/certs/, для этих потерянных четырех файлов *.pem вы можете копировать их из других мест или, может быть, создать их сами (эти четыре файла pem, безусловно, не правильны в начале).
  • убедитесь, что env установлен правильно в файле bash_profile, например: export DOCKER_HOST = tcp://192.168.99.100: 2376 export DOCKER_MACHINE_NAME = default экспорт DOCKER_TLS_VERIFY = 1 export DOCKER_CERT_PATH =/Пользователи/johnwang/.docker/machine/machines/default
  • перезапустите cmd: docker-machine rebate-certs по умолчанию (возможно, прежде чем запускать это, вам нужно снова открыть терминал докера) Пробовал на докере toolbox на mac, и он работает.
  • Наконец, некоторые журналы результата: Ошибка проверки соединения TLS: проверка ошибок и/или восстановление сертификатов: произошла ошибка проверки сертификатов для хоста "192.168.99.100:2376": x509: сертификат, подписанный неизвестным органом Вы можете попытаться регенерировать их с помощью "регенерационных сертификатов докеров" [name] ". Обратите внимание, что это приведет к перезапуску демона Docker, который может остановить запуск контейнеров. ... ... johns-MacBook-Pro: certs johnwang $docker-machine replate-certs default Регенерировать сертификаты машины TLS? Предупреждение: это необратимо. (y/n): y Регенерация сертификатов TLS Ожидание доступа к SSH... Обнаружение устройства... Копирование сертификатов в каталог локального компьютера... Копирование сертификатов на удаленный компьютер... Настройка конфигурации Docker на удаленном демоне... johns-MacBook-Pro: сертификаты johnwang $docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS default - virtualbox Запуск tcp://192.168.99.100: 2376 v17.03.1-ce

Надеюсь, что это поможет также см. мой ответ здесь: https://github.com/docker/machine/issues/2808

Ответ 8

В моем случае это был мой FortiClient, который вызвал проблему. После его отключения docker-machine env default снова работал отлично. Я предлагаю вам проверить, есть ли в вашей системе антивирусная программа.