Tôi đang cố thiết lập một Docker Registry riêng và lưu hình ảnh vào thể hiện AWS S3. Registry dường như hoạt động tốt - nó khởi động ok và tôi có thể xác thực nó trên https. Vấn đề tôi gặp phải là tôi đang gặp lỗi khi lưu vào S3, vì vậy tôi cho rằng có một số vấn đề về quyền với chính sách S3 IAM.Lỗi khi lưu hình ảnh Docker vào thùng AWS S3 từ Docker Registry riêng
Lệnh docker run
trông như thế này:
docker run -p 443:5000 \
--link redis:redis \
-e REGISTRY_STORAGE=s3 \
-e REGISTRY_STORAGE_S3_BUCKET=my-docker-registry \
-e REGISTRY_STORAGE_S3_ACCESSKEY=**** \
-e REGISTRY_STORAGE_S3_SECRETKEY=**** \
-e REGISTRY_STORAGE_S3_REGION=us-east-1 \
-v `pwd`/auth:/auth \
-e REGISTRY_AUTH=htpasswd \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
-v `pwd`/certs:/certs \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/my.com_chain.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/my.com.key \
-e REGISTRY_STORAGE_CACHE_BLOBDESCRIPTOR=redis \
-e REGISTRY_REDIS_ADDR=redis:6379 \
registry:2.5
Và chính sách S3 IAM trông như thế này:
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"s3:ListAllMyBuckets"
],
"Resource":"arn:aws:s3:::*"
},
{
"Effect":"Allow",
"Action":[
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource":"arn:aws:s3:::my-docker-registry"
},
{
"Effect":"Allow",
"Action":[
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject",
"s3:ListMultipartUploadParts",
"s3:AbortMultipartUpload"
],
"Resource":"arn:aws:s3:::my-docker-registry/*"
}
]
}
Mục log lỗi là:
level=error msg="error resolving upload: s3aws: AccessDenied: Access Denied\n\tstatus code: 403, request id: 2B224..." auth.user.name=my-user go.version=go1.6.3 http.request.host=my.domain.com http.request.id=13b79c07-... http.request.method=PATCH http.request.remoteaddr="xx.xx.xx.xx:41392" http.request.uri="/v2/my-test/blobs/uploads/467d94ea-2a77...?_state=zQd-..." http.request.useragent="docker/1.12.0 go/go1.6.3 git-commit/8eab123 kernel/4.4.15-moby os/linux arch/amd64 UpstreamClient(Docker-Client/1.12.0 \\(darwin\\))" instance.id=8a8db6f1-8fe4 vars.name=my-test vars.uuid=467d94ea-2a77 version=v2.5.0
Tôi đã đã sử dụng chính sách tương tự cho tải lên tệp trong các ứng dụng khác, vì vậy tôi không chắc chắn vấn đề ở đâu. Tôi cần phải thay đổi gì trong chính sách IAM để cho phép đăng ký lưu vào nhóm S3?
Bạn có thể đề cập đến sổ đăng ký nào bạn đang sử dụng không? Dịch vụ Container Đàn hồi? –
Tôi đang sử dụng đăng ký của riêng mình, Dockerfile đang ở trong bài đăng. – ldg