2015-04-15 5 views
5

Я пытаюсь настроить локальный реестр докеров, но у меня возникают проблемы при попытке нажать на него изображения. Я открыл вопрос GitHub тоже: https://github.com/docker/docker/issues/12405Локальный реестр Docker: push fail

СРЕДЫ

ОС: CentOS 6.6

Ядро: 2.6.32-504.12.2.el6.x86_64

Docker версия:

$ sudo docker version 
Client version: 1.5.0 
Client API version: 1.17 
Go version (client): go1.4.1 

Я за корпоративным прокси (http://domain \ username: password @ proxy: port).

ПРОБЛЕМА

Я запуск демона Docker с помощью этой команды:

sudo docker -d --insecure-registry 127.0.0.1:49500& 

Я скачал файл config_sample.yml из GitHub докер-реестра, переименовал его в registry_config.yml , и просто изменил «storage_path» в локальном вкусе (чтобы указать на выбранный каталог, где я хочу установить громкость):

local: &local 
<<: *common 
storage: local 
storage_path: /image 

Чтобы запустить реестр (версия 0.9.1), я открываю другую вкладку в моем терминале, и я использую эту команду:

sudo docker run -t -i -p 127.0.0.1:49500:5000 -v $HOME/localRegistry/image:/image -e DOCKER_REGISTRY_CONFIG=$HOME/localRegistry/registry_config.yml --name registry registry /bin/bash 

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

$sudo docker push 127.0.0.1:49500/centos:7 
INFO[1215] POST /v1.17/images/127.0.0.1:49500/centos/push?tag=7 
INFO[1215] +job push(127.0.0.1:49500/centos) 
INFO[1215] +job resolve_repository(127.0.0.1:49500/centos) 
INFO[1215] -job resolve_repository(127.0.0.1:49500/centos) = OK (0) 
invalid registry endpoint "http://127.0.0.1:49500/v0/". HTTPS attempt: unable to ping registry endpoint https://127.0.0.1:49500/v0/ 
v2 ping attempt failed with error: Get https://127.0.0.1:49500/v2/: read tcp 127.0.0.1:49500: connection reset by peer 
v1 ping attempt failed with error: Get https://127.0.0.1:49500/v1/_ping: read tcp 127.0.0.1:49500: connection reset by peer. HTTP attempt: unable to ping registry endpoint http://127.0.0.1:49500/v0/ 
v2 ping attempt failed with error: Get http://127.0.0.1:49500/v2/: read tcp 127.0.0.1:49500: connection reset by peer 
v1 ping attempt failed with error: Get http://127.0.0.1:49500/v1/_ping: read tcp 127.0.0.1:49500: connection reset by peer 
INFO[1215] -job push(127.0.0.1:49500/centos) = ERR (1) 
ERRO[1215] Handler for POST /images/{name:.*}/push returned error: v1 ping attempt failed with error: Get http://127.0.0.1:49500/v1/_ping: read tcp 127.0.0.1:49500: connection reset by peer 
ERRO[1215] HTTP Error: statusCode=500 v1 ping attempt failed with error: Get http://127.0.0.1:49500/v1/_ping: read tcp 127.0.0.1:49500: connection reset by peer 
FATA[0000] Error: v1 ping attempt failed with error: Get http://127.0.0.1:49500/v1/_ping: read tcp 127.0.0.1:49500: connection reset by peer 

Спросите меня, хотите ли вы получить более конкретные детали. Спасибо за внимание :)

UPDATE

я не заметил, но так как я модернизировал от Докер 1.4.1 до 1.5.0 вчера, похоже, докер не удалось достичь хаб через прокси (поиск sudo docker был неудачным). Я исправил это, экспортировав переменные environement HTTP_PROXY и HTTPS_PROXY, а также запустив демон с sudo -E.

Затем, как отметил Сэр, я не выбрасывал свой файл конфигурации в контейнер реестра. Таким образом, реестр не смог получить доступ к конфигу. Я изменил это, переместив файл конфигурации в свой собственный каталог и установив этот каталог в качестве тома при запуске контейнера реестра. Новая команда работает:

sudo docker run -t -i -p 127.0.0.1:49500:5000 -v $HOME/localRegistry/image:/image -v $HOME/localRegistry/configDir:/configDir -e DOCKER_REGISTRY_CONFIG=configDir/config.yml --name registry registry /bin/bash 

После этих 2-х модификаций, я проверил еще раз, работает докер демон с опцией -D этот раз.Вот выход (разбит на 3 части):

https://gist.github.com/ekeryelleven/9714312c45b7ff21ce2a

Я запустил контейнер реестра (из другой вкладки терминала): https://gist.github.com/ekeryelleven/b9bfa50bfe3221798659

Тогда я толкнул: https://gist.github.com/ekeryelleven/80f8f1d1dad00b0fbea9

UPDATE 2

Кто-то сказал мне, что возможно связан с https://github.com/docker/docker/issues/9315

я попытался воспроизвести:

$ wget -O- --post-data='' 'http://127.0.0.1:49500/images' 
--2015-04-16 11:01:42-- http://127.0.0.1:49500/images 
Resolving <proxy>... <ip> 
Connecting to <proxy>|<ip>|:<port>... connected. 
Proxy request sent, awaiting response... 504 Gateway Timeout 
2015-04-16 11:01:42 ERROR 504: Gateway Timeout. 

Так что я подумал, что прокси-сервер был Мессинг вещи, когда я пытаюсь достичь локального реестра, так что я снова побежал мой 1-ый тест без установки каких-либо прокси-конфигурации для докер daemon (нет переменных HTTP_PROXY и HTTPS_PROXY, без sudo -E). Выходные (3 части):

http://pastebin.com/raw.php?i=XaJaSsWk

Запуск контейнера реестра: http://pastebin.com/raw.php?i=1tux468H

Принудительная: http://pastebin.com/raw.php?i=LsvNfdQf

+1

Я еще не использовал конфигурационные файлы с реестром, но похоже, что вы настраиваете путь к файлу, который находится на вашем хосте, а не в вашем контейнере. Поскольку это переменная среды, я бы предположил, что вы можете установить ее только в файл, доступный внутри контейнера, потому что он не может получить доступ к файловой системе хоста. – SGer

+0

Я снова прочитал документацию, касающуюся конфигурационного файла, и вы правы, она должна быть доступна контейнеру, установив его в том. Но я только что понял, что у меня есть другая проблема: поскольку я обновил Docker с 1.4.1 до 1.5.0, я не могу получить доступ к концентратору докеров через свой прокси. Вероятно, это причина моей проблемы. –

+0

Я обновил материал, учитывая вашу идею. –

ответ

1

Не совсем ответ, но я повышен до Docker 1.6 и реестра 2.0 и проблема исчезла ,

Смежные вопросы