Wie man Quay PermissionError behebt: [Errno 13] Permission denied: '/datastorage/registry'
English
Deutsch
Problem
Beim Upload in eine Quay-Registry ist der Upload-Prozess kontinuierlich Retrying und die quay-Protokolle zeigen den folgenden Fehler:
error_trace.txt
Traceback (most recent call last):
File "/app/lib/python3.9/site-packages/gunicorn/workers/base_async.py", line 65, in handle
util.reraise(*sys.exc_info())
File "/app/lib/python3.9/site-packages/gunicorn/util.py", line 626, in reraise
raise value
File "/app/lib/python3.9/site-packages/gunicorn/workers/base_async.py", line 55, in handle
self.handle_request(listener_name, req, client, addr)
File "/app/lib/python3.9/site-packages/gunicorn/workers/ggevent.py", line 127, in handle_request
super().handle_request(listener_name, req, sock, addr)
File "/app/lib/python3.9/site-packages/gunicorn/workers/base_async.py", line 130, in handle_request
util.reraise(*sys.exc_info())
File "/app/lib/python3.9/site-packages/gunicorn/util.py", line 626, in reraise
raise value
File "/app/lib/python3.9/site-packages/gunicorn/workers/base_async.py", line 108, in handle_request
respiter = self.wsgi(environ, resp.start_response)
File "/app/lib/python3.9/site-packages/flask/app.py", line 2463, in __call__
return self.wsgi_app(environ, start_response)
File "/app/lib/python3.9/site-packages/werkzeug/middleware/proxy_fix.py", line 169, in __call__
return self.app(environ, start_response)
File "/app/lib/python3.9/site-packages/flask/app.py", line 2449, in wsgi_app
response = self.handle_exception(e)
File "/app/lib/python3.9/site-packages/flask/app.py", line 1866, in handle_exception
reraise(exc_type, exc_value, tb)
File "/app/lib/python3.9/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/app/lib/python3.9/site-packages/flask/app.py", line 2446, in wsgi_app
response = self.full_dispatch_request()
File "/app/lib/python3.9/site-packages/flask/app.py", line 1951, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/app/lib/python3.9/site-packages/flask/app.py", line 1820, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/app/lib/python3.9/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/app/lib/python3.9/site-packages/flask/app.py", line 1949, in full_dispatch_request
rv = self.dispatch_request()
File "/app/lib/python3.9/site-packages/flask/app.py", line 1935, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/quay-registry/endpoints/decorators.py", line 227, in wrapper
return func(*args, **kwargs)
File "/quay-registry/endpoints/decorators.py", line 90, in wrapper
return func(*args, **kwargs)
File "/quay-registry/auth/registry_jwt_auth.py", line 175, in wrapper
return func(*args, **kwargs)
File "/quay-registry/endpoints/v2/__init__.py", line 169, in wrapped
return func(namespace_name, repo_name, *args, **kwargs)
File "/quay-registry/endpoints/decorators.py", line 163, in wrapper
return func(*args, **kwargs)
File "/quay-registry/endpoints/decorators.py", line 188, in wrapper
return func(*args, **kwargs)
File "/quay-registry/endpoints/v2/blob.py", line 268, in start_blob_upload
blob_uploader = create_blob_upload(repository_ref, storage, _upload_settings())
File "/quay-registry/data/registry_model/blobuploader.py", line 74, in create_blob_upload
new_upload_uuid, upload_metadata = storage.initiate_chunked_upload(location_name)
File "/quay-registry/storage/distributedstorage.py", line 26, in wrapper
return storage_func(*args, **kwargs)
File "/quay-registry/storage/local.py", line 90, in initiate_chunked_upload
with open(self._init_path(self._rel_upload_path(new_uuid), create=True), "wb"):
File "/quay-registry/storage/local.py", line 25, in _init_path
os.makedirs(dirname)
File "/usr/lib64/python3.9/os.py", line 215, in makedirs
makedirs(head, exist_ok=exist_ok)
File "/usr/lib64/python3.9/os.py", line 225, in makedirs
mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: '/datastorage/registry'Lösung
Suchen Sie in Ihrer docker-compose.yml für quay, welches Verzeichnis auf /storage abgebildet ist
docker-compose-quay-storage.yml
services:
quay:
image: quay.io/projectquay/quay:latest
# [...]
volumes:
- ./quay_storage:/datastorage # <--Für dieses Beispiel ist das Verzeichnis ./quay_storage auf /datastorage im Container abgebildet.
Erstellen Sie in diesem Verzeichnis das registry-Unterverzeichnis:
fix_quay_storage_permissions.sh
mkdir -p ./quay_storage/registry
chmod -R 777 ./quay_storageIch habe noch nicht ganz herausgefunden, was die korrekten Berechtigungen sind, seien Sie sich also der Sicherheitsauswirkungen von chmod -R 777 bewusst, das das Verzeichnis und alle seine Inhalte welt-lesbar und welt-beschreibbar macht.
Check out similar posts by category:
Docker
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow