2016-05-10 23 views
11

Chúng ta có logic trong CI-CD của chúng ta rằng thẻ (thông qua REST) ​​dàn dựng hình ảnh mới nhất (nếu thử nghiệm thành công). Điều này làm việc trên registry v1.làm thế nào để gắn thẻ hình ảnh trong docker registry v2

hiện đã chuyển sang v2 api và tôi không thể tìm thấy trong tài liệu hướng dẫn cách "thêm" thẻ vào hình ảnh hiện có trong đăng ký .. Tôi đang ở bước có thể mang lại "tệp kê khai" của một số hình ảnh dàn dựng, nhưng không chắc chắn cách thêm thẻ và http đăng nó. cố gắng để gửi các đầu vào bên dưới

  1. "tag": "dàn", "mới nhất",

  2. "tag": [ "dàn", "mới nhất"], và nhiều hơn nữa

    { "schemaVersion": 1, "tên": "configservice", "tag": "dàn", "kiến trúc": "amd64", "fsLayers": [....

Trả lời

5

Đây không phải là một câu trả lời trực tiếp câu hỏi của bạn, nhưng tôi đã luôn luôn thực hiện những điều sau đây ...

docker pull myimage:staging 
docker run myimage:staging test 
docker tag myimage:staging myimage:release 
docker push myimage:release 
+2

Đây chắc chắn là một giải pháp làm việc, nhưng nó đòi hỏi phải có docker nhị phân, có thể chạy nó như là người chủ. Ngoài ra, nó có thể mất khá nhiều thời gian, vì nó liên quan đến việc tải xuống hình ảnh. – wheleph

+3

Dựa trên câu hỏi, chúng tôi đang chạy thử nghiệm trên hình ảnh để xác nhận nó - vì vậy nó phải tồn tại (hoặc đã được xây dựng hoặc tải xuống) trên máy CI. Điều này không giới thiệu thêm bất kỳ mối lo ngại nào về bước "test" (không chỉ là lag từ 'docker push' thứ hai mà nó khá nhanh trong trường hợp retag. –

9

Nếu bạn có Docker Registry hỗ trợ manifest phiên bản giản đồ 2, bạn chỉ có thể tải lên các biểu hiện của một hình ảnh hiện có trong một thẻ mới.

Ví dụ: giả sử bạn muốn gắn thẻ phiên bản mới nhất của hình ảnh busybox. Các bước sẽ là:

Tải manifest hiện:

curl '<registry_url>/v2/mybusybox/manifests/latest' \ 
-H 'accept: application/vnd.docker.distribution.manifest.v2+json' \ 
> manifest.json 

Đây là những gì biểu hiện có thể trông giống như (chú ý schemaVersion được 2):

{ 
    "schemaVersion": 2, 
    "mediaType": "application/vnd.docker.distribution.manifest.v2+json", 
    "config": { 
     "mediaType": "application/octet-stream", 
     "size": 1459, 
     "digest": "sha256:2b8fd9751c4c0f5dd266fcae00707e67a2545ef34f9a29354585f93dac906749" 
    }, 
    "layers": [ 
     { 
     "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", 
     "size": 667590, 
     "digest": "sha256:8ddc19f16526912237dd8af81971d5e4dd0587907234be2b83e249518d5b673f" 
     } 
    ] 
} 

Tải lên tệp kê khai dưới thẻ mới:

curl -XPUT '<registry_url>/v2/mybusybox/manifests/new_tag' \ 
-H 'content-type: application/vnd.docker.distribution.manifest.v2+json' \ 
-d '@manifest.json' 

Hướng dẫn chi tiết từng bước được cung cấp trong số post này.

+3

Bạn nên đăng các hướng dẫn tại đây trong trường hợp website đi xuống - http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers – kichik

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