2015-01-06 20 views
16

Tôi đang lưu trữ đăng ký docker của riêng mình trong vùng chứa docker. It's fronted bởi nginx chạy trong một container riêng biệt để thêm auth cơ bản. Kiểm tra các tuyến đường _ping tôi có thể thấy rằng nginx đang định tuyến một cách thích hợp. Khi gọi docker login từ boot2docker (trên Mac OSX) Tôi nhận được lỗi này:Sử dụng đăng ký riêng được lưu trữ trên docker

FATA[0003] Error response from daemon: Invalid registry endpoint https://www.example.com:8080/v1/: 
Get https://www.example.com:8080/v1/_ping: x509: certificate signed by unknown authority. If this 
private registry supports only HTTP or HTTPS with an unknown CA certificate, please add 
`--insecure-registry www.example.com:8080` to the daemon's arguments. In the case of HTTPS, 
if you have access to the registry's CA certificate, no need for the flag; simply place the CA 
certificate at /etc/docker/certs.d/www.example.com:8080/ca.crt 

Đó là lẻ - bởi vì đó là một cert CA SSL hợp lệ. Tôi đã thử thêm --insecure-đăng ký trong EXTRA-ARGS theo các hướng dẫn: https://github.com/boot2docker/boot2docker#insecure-registry nhưng ban đầu tập tin 'hồ sơ' không tồn tại nó. Nếu tôi tạo và thêm

EXTRA_ARGS="--insecure-registry www.example.com:8080" 

Tôi không thấy cải thiện. Tôi muốn cô lập các ví dụ và do đó đã cố gắng docker login từ một máy ảo ubuntu (không phải boot2docker). Bây giờ tôi gặp phải một lỗi khác:

Error response from daemon: 

Đăng ký docker được chạy trực tiếp từ trung tâm công cộng, ví dụ:

docker run -d -p 5000: 5000 đăng ký

(Lưu ý rằng nginx định tuyến từ 8080 đến 5000). Bất kỳ trợ giúp và/hoặc tài nguyên nào để giúp gỡ lỗi điều này sẽ được nhiều người đánh giá cao.

CẬP NHẬT

tôi đang tìm kiếm một hướng dẫn để giúp một cách toàn diện giải quyết vấn đề này. Cụ thể là:

  • Tạo một registry tin
  • Bảo vệ registry với cơ bản Auth
  • Sử dụng registry từ boot2docker

Tôi đã tạo registry và thử nghiệm tại địa phương, nó hoạt động. Tôi đã bảo đảm đăng ký với nginx thêm auth cơ bản.

Sự cố hiện thực sự đang sử dụng đăng ký từ hai loại ứng dụng khách:

1) Máy khách không boot2docker. Một trong những câu trả lời dưới đây đã giúp với điều này. Tôi đã thêm cờ --insecure-registry vào các tùy chọn trong/etc/default/docker và bây giờ tôi có thể nói chuyện với remote docker registry của mình. Tuy nhiên, điều này không tương thích với auth như Docker đăng nhập được một lỗi:

2015/01/15 21:33:57 HTTP code 401, Docker will not send auth headers over HTTP. 

Vì vậy, nếu tôi muốn sử dụng auth tôi sẽ cần phải sử dụng HTTPS. Tôi đã có máy chủ này phục vụ qua HTTPS nhưng điều đó không hoạt động nếu tôi đặt --insecure-registry. Dường như có sự cố về chứng chỉ tin cậy, tôi tự tin rằng tôi có thể giải quyết trên thẻ không phải boot2docker nhưng ..

2) Đối với trình khách boot2docker, tôi không thể lấy --insecure-registry để làm việc hoặc chứng chỉ được tin cậy?

UPDATE 2

Sau this stack exchange câu hỏi tôi quản lý để thêm ca để ubuntu của tôi VM và bây giờ tôi có thể sử dụng từ khách hàng boot2docker phi. Tuy nhiên, vẫn còn rất nhiều hành vi kỳ quặc.

Mặc dù người dùng hiện tại của tôi là thành viên của nhóm docker (vì vậy tôi không phải sử dụng sudo) Tôi phải sử dụng sudo hoặc gặp lỗi sau khi cố đăng nhập hoặc kéo từ đăng ký riêng tư của mình

[email protected]:~$ docker login example.com:8080 
WARNING: open /home/parallels/.dockercfg: permission denied 

[email protected]:~$ docker pull example.com:8080/hw:1 
WARNING: open /home/parallels/.dockercfg: permission denied 

Và khi chạy container kéo từ registry riêng tư của tôi cho lần đầu tiên, tôi phải xác định chúng bằng ID hình ảnh - không phải tên của họ.

+0

bạn có khởi động lại trình nền docker không? bạn có thể thử https://github.com/larrycai/nginx-registry. có thể hiển thị thêm nhật ký từ boot2docker /var/lib/boot2docker/docker.log –

+0

Đúng, khởi động lại nhiều lần. Đã thử trên các hệ thống khác nhau, rất nhiều. Không có gì thú vị trong nhật ký. Lưu ý rằng nó không hoạt động trên một thể hiện non boot2docker. – ConfusedNoob

+0

3 nhật ký (docker daemon/nginx/docker registry) cần kiểm tra. sử dụng lệnh curl để gỡ lỗi để bỏ qua docker daemon trước, những thông tin đó vẫn bị giới hạn cho những người khác trợ giúp. –

Trả lời

1

Thử chạy daemon với args:

docker -d --insecure-registry="www.example.com:8080" 

thay vì thiết EXTRA_ARGS

+2

Làm thế nào để bạn làm điều này cho boot2docker? – ConfusedNoob

5

Chỉnh sửa các tập tin Docker

sudo vim /etc/default/docker 

Thêm DOCKER_OPTS

DOCKER_OPTS="$DOCKER_OPTS --insecure-registry=www.example.com:8080" 

Khởi động lại dịch vụ Docker

sudo service docker restart 
+7

Tệp này ở đâu khi sử dụng boot2docker trên Mac OS X? – ConfusedNoob

2

Docker phiên bản> 1.3.1 giao tiếp qua HTTPS theo mặc định khi kết nối với Docker registry

Nếu bạn đang sử dụng Nginx để proxy_pass tới cổng 5000 nơi Docker registry đang lắng nghe, bạn sẽ cần để chấm dứt kết nối SSL của trình docker với docker registry tại webserver/LB (Nginx trong trường hợp này). Để xác minh xem Nginx có đang chấm dứt kết nối SSL hay không, hãy sử dụng cURL https://www.example.com:8081/something trong đó 8081 là một cổng khác được thiết lập để thử nghiệm SSL cert.

Nếu bạn không quan tâm nếu khách hàng Docker của bạn kết nối để đăng ký qua HTTP và HTTPS không, thêm

OPTIONS = "- insecure-registry www.example.com:8080"

trong/etc/sysconfig/docker (hoặc tương đương trong các bản phân phối khác) và khởi động lại dịch vụ docker.

Hy vọng điều đó sẽ hữu ích.

2

Kể từ phiên bản Docker 1.3.1, nếu sổ đăng ký của bạn không hỗ trợ HTTPS, bạn phải thêm nó làm đăng ký không an toàn. Đối với boot2docker, điều này phức tạp hơn một chút so với bình thường. Xem: https://github.com/boot2docker/boot2docker#insecure-registry

Các lệnh liên quan là:

$ boot2docker init 
$ boot2docker up 
$ boot2docker ssh 
$ echo 'EXTRA_ARGS="--insecure-registry <YOUR INSECURE HOST>"' | sudo tee -a /var/lib/boot2docker/profile 
$ sudo /etc/init.d/docker restart 

Nếu bạn muốn thêm chứng chỉ SSL cho instance boot2docker, nó sẽ là một cái gì đó tương tự (boot2docker ssh tiếp theo sudo).

2

Đối với ubuntu, xin vui lòng chỉnh sửa tập tin/etc/default/Docker

DOCKER_OPTS="$DOCKER_OPTS --insecure-registry=10.27.19.230:5000" 

Đối rehl, xin vui lòng chỉnh sửa tập tin/etc/sysconfig/Docker

other_args="--insecure-registry 10.27.19.230:5000" 
3

Chạy lệnh sau:

boot2docker ssh "echo $'EXTRA_ARGS=\"--insecure-registry <YOUR INSECURE HOST>\"' | sudo tee -a /var/lib/boot2docker/profile && sudo /etc/init.d/docker restart" 
Các vấn đề liên quan