2015-04-15 20 views
5

Tôi đang cố gắng thiết lập sổ đăng ký docker cục bộ, nhưng tôi gặp khó khăn khi cố gắng đẩy hình ảnh vào đó. Tôi mở một vấn đề github quá: https://github.com/docker/docker/issues/12405Trình đăng ký cục bộ Docker: đẩy không thành công

MÔI TRƯỜNG

Hệ điều hành: CentOS 6.6

Kernel: phiên bản 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 

Tôi đứng sau một proxy công ty (http://domain \ tên người dùng: mật khẩu @ proxy: cổng).

VẤN ĐỀ

Tôi đang tung ra các daemon với lệnh này Docker:

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

Tôi đã tải file config_sample.yml từ github Docker-registry, đổi tên nó để registry_config.yml và chỉ sửa đổi "storage_path" trong hương vị địa phương (để trỏ đến thư mục đã chọn nơi tôi muốn gắn kết một ổ đĩa):

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

Để bắt đầu đăng ký (phiên bản 0.9.1), tôi mở một tab khác trong thiết bị đầu cuối của tôi và tôi sử dụng lệnh:

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 

Quay trở lại tab cuối 1st, tôi sau đó cố gắng đẩy một hình ảnh ngẫu nhiên vào đăng ký cục bộ và đây là nơi tôi gặp phải một số lỗi:

$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 

Hỏi tôi xem bạn có muốn biết thêm chi tiết cụ thể không. Cám ơn sự quan tâm của bạn :)

CẬP NHẬT

tôi đã không nhận thấy, nhưng kể từ khi tôi đã nâng cấp từ Docker 1.4.1 đến 1.5.0 ngày hôm qua, nó có vẻ như Docker đã không thể đạt được trung tâm thông qua proxy (tìm kiếm sudo docker đã thất bại). Tôi đã khắc phục điều đó bằng cách xuất các biến môi trường HTTP_PROXY và HTTPS_PROXY và bằng cách khởi chạy trình nền với sudo -E.

Sau đó, như SGer đã chỉ ra, tôi không ném tệp cấu hình của mình vào vùng chứa đăng ký. Do đó, đăng ký không thể truy cập cấu hình. Tôi đã thay đổi điều đó bằng cách di chuyển tệp cấu hình vào thư mục riêng của nó và bằng cách gắn thư mục đó làm ổ đĩa khi chạy vùng chứa đăng ký. Lệnh chạy mới:

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 

Sau 2 sửa đổi này, tôi đã kiểm tra lại, chạy docker daemon với tùy chọn -D lần này.Đây là kết quả (chia thành 3 phần):

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

Tôi đưa ra các thùng chứa registry (từ một tab terminal): https://gist.github.com/ekeryelleven/b9bfa50bfe3221798659

Sau đó, tôi đẩy: https://gist.github.com/ekeryelleven/80f8f1d1dad00b0fbea9

UPDATE 2

Ai đó nói với tôi rằng nó có thể được liên kết với https://github.com/docker/docker/issues/9315

Tôi cố gắng để tái sản xuất:

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

Vì vậy, tôi nghĩ có lẽ proxy đã rối tung lên mọi thứ khi tôi đang cố gắng để đạt được đăng ký tại địa phương, vì vậy tôi chạy lại kiểm tra 1 của tôi mà không thiết lập bất kỳ proxy cấu hình cho Docker daemon (không có biến HTTP_PROXY và HTTPS_PROXY, không có sudo -E). Output (3 phần):

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

Launching container registry: http://pastebin.com/raw.php?i=1tux468H

Pushing: http://pastebin.com/raw.php?i=LsvNfdQf

+1

Tôi chưa sử dụng bất kỳ tệp cấu hình nào với sổ đăng ký, nhưng có vẻ như bạn đang đặt đường dẫn cấu hình cho tệp trên máy chủ lưu trữ của bạn, không phải trong vùng chứa của bạn. Vì nó là một biến môi trường, tôi hy vọng rằng bạn chỉ có thể đặt nó vào một tệp có thể truy cập bên trong vùng chứa, vì nó không thể truy nhập hệ thống tệp máy chủ. – SGer

+0

Tôi đã đọc lại tài liệu liên quan đến tệp cấu hình và bạn nói đúng, nó có thể truy cập được vào vùng chứa bằng cách gắn nó vào ổ đĩa. Nhưng tôi vừa mới nhận ra rằng tôi có một vấn đề khác: vì tôi đã nâng cấp Docker từ 1.4.1 lên 1.5.0, tôi không thể truy cập hub docker thông qua proxy của mình. Đây có lẽ là nguyên nhân của vấn đề của tôi. –

+0

Tôi đã cập nhật thông tin về người đàn ông, đưa ý tưởng của bạn vào tài khoản –

Trả lời

1

Không thực sự là một câu trả lời, nhưng tôi nâng cấp lên Docker 1.6 và Registry 2.0 và vấn đề biến mất .

Các vấn đề liên quan