Ошибка проверки соединения 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, Регенерирующие сертификаты также не помогают.
Любая идея?
Спасибо.
Ответы
Ответ 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
снова работал отлично. Я предлагаю вам проверить, есть ли в вашей системе антивирусная программа.