Докер жалуется на недействительный сертификат после обновления до v1.7.0

После обновления до Docker v1.7.0 (а также boot2docker) я получаю следующую ошибку при запуске docker ps:

x509: certificate is valid for 127.0.0.1, 10.0.2.15, not 192.168.59.103

Это известная проблема данной версии и что я могу сделать, чтобы ее исправить?


person nwinkler    schedule 22.06.2015    source источник


Ответы (4)


Это известная проблема, появившаяся в версии 1.7.0 boot2docker: https://github.com/boot2docker/boot2docker/issues/824

Обновление до boot2docker 1.7.1

Обновление до boot2docker 1.7.1 устраняет эту проблему, как описано здесь.

Опции для boot2docker 1.7.0

Похоже, это связано с тем, как сетевые интерфейсы открываются во время загрузки. Чтобы исправить это, можно использовать следующие параметры.

Опция 1

Исправление заключается в выполнении следующей последовательности, в которой добавляется код для ожидания присутствия всех сетевых интерфейсов:

boot2docker ssh
sudo curl -o /var/lib/boot2docker/profile https://gist.githubusercontent.com/garthk/d5a17007c277aa5c76de/raw/3d09c77aae38b4f2809d504784965f5a16f2de4c/profile
sudo halt
boot2docker up

Источник (и дополнительные сведения о загруженном коде): https://gist.github.com/garthk/d5a17007c277aa5c76de

Это устранило проблему для меня, хотя мне пришлось остановить boot2docker-vm через пользовательский интерфейс VirtualBox, чтобы получить чистый старт.

Gist добавляет в файл .profile на виртуальной машине boot2docker следующее:

wait4eth1() {
        CNT=0
        until ip a show eth1 | grep -q UP
        do
                [ $((CNT++)) -gt 60 ] && break || sleep 1
        done
        sleep 1
}
wait4eth1

Эта функция ожидает появления интерфейса eth1 в течение 1 минуты.

Вариант 2

Другой вариант вроде бы сделать

boot2docker delete
boot2docker init
boot2docker up

Это уничтожит виртуальную машину boot2docker - вы можете потерять все сделанные настройки.

person nwinkler    schedule 22.06.2015

Простой запуск этой команды решает проблему для меня. Это было предложено сотрудником Docker через GitHub.

boot2docker ssh sudo /etc/init.d/docker restart

К сожалению, его нужно запускать каждый раз при запуске boot2docker.

person Ted Avery    schedule 27.06.2015
comment
Это из-за способа запуска сетевых интерфейсов. После того, как boot2docker полностью запустился, все сетевые интерфейсы будут задействованы - они будут использоваться при перезапуске. Связанный мною Gist добавляет функцию, которая ожидает появления сетевых интерфейсов при первом запуске. - person nwinkler; 28.06.2015

Я нашел следующую «легкую» альтернативу работе. Используйте псевдоним оболочки:

alias docker="docker --tlsverify=false"

Спасибо Марку Дункану.

person Jorge Nunez Newton    schedule 03.07.2015

Из руководства по устранению неполадок:

docker-machine regenerate-certs default

docker-machine restart default

И тогда вам хорошо, просто запустите это как обычно

eval $(docker-machine env default)
person Calahad    schedule 24.05.2017