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ọ.
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 –
Đú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
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. –