umoci-unpack(1)(#) - umoci-unpack(1)(#)
Aleksa Sarai SEPTEMBER 2018

umoci unpack - استخراج تگ تصویر OCI در یک runtime bundle

umoci unpack --image=image[:tag] [--rootless] [--uid-map=value] [--uid-map=value] [--keep-dirlinks] bundle

تمام لایه‌ها را (به‌صورت قطعی و تعیّن‌پذیر) در یک OCI runtime bundle در مسیر bundle استخراج می‌کند و همچنین یک پیکربندی زمان اجرای OCI متناظر با پیکربندی تصویر ایجاد می‌نماید. علاوه بر این، در هنگام استخراج، یک مشخصات mtree(8) تولید می‌شود تا امکان ایجاد تفاوت‌های سیستم‌فایل (دلتاها) توسط umoci-repack(1) فراهم شده و ساخت تصاویر چندلایه‌ی OCI میسر گردد.

گزینه‌های عمومی در umoci(1) تعریف شده‌اند.

--image=image[:tag]
تگ تصویر OCI که در bundle استخراج خواهد شد. image باید مسیری به یک تصویر معتبر OCI و tag باید یک تگ معتبر در تصویر باشد. اگر tag مشخص نشود، مقدار پیش‌فرض آن "latest" خواهد بود.

--rootless
پشتیبانی از استخراج بدون ریشه (rootless) را فعال می‌کند. این گزینه امکان استفاده از umoci-unpack(1) و umoci-repack(1) را به‌عنوان یک کاربر غیرممتاز فراهم می‌سازد. استفاده از این پرچم به معنای اعمال --uid-map=0:$(id -u):1 و --gid-map=0:$(id -g):1 و همچنین فعال‌سازی چندین قابلیت برای شبیه‌سازی بخش‌هایی از فرایند استخراج به منظور تولید نزدیک‌ترین حالت ممکن به سیستم‌فایل اصلی است. توجه داشته باشید که تقریباً در هیچ حالتی امکان استخراج بی‌نقص یک تصویر OCI با --rootless وجود ندارد، اما نتیجه تا جای ممکن نزدیک خواهد بود.

--uid-map=value
یک نگاشت UID را برای استفاده در هنگام باز کردن (و بسته‌بندی مجدد) لایه‌ها مشخص می‌کند. این گزینه به‌روشی مشابه با user_namespaces(7) استفاده می‌شود و به‌صورت container:host[:size] است.

--gid-map=value
یک نگاشت GID را برای استفاده در هنگام باز کردن (و بسته‌بندی مجدد) لایه‌ها مشخص می‌کند. این گزینه به‌روشی مشابه با user_namespaces(7) استفاده می‌شود و به‌صورت container:host[:size] است.

--keep-dirlinks
به‌جای بازنویسی دایرکتوری‌هایی که پیوندی به دایرکتوری‌های دیگر هستند در شرایطی که لایه‌های بالاتر دارای یک دایرکتوری صریح باشند، نوشتن مستقیماً از طریق همان پیوند نمادین انجام می‌شود. این گزینه از گزینه‌ای با همین نام در rsync الهام گرفته شده است.

دستورات زیر یک تصویر را با استفاده از skopeo(1) از یک رجیستری docker(1) بارگیری کرده، تصویر مذکور را استخراج می‌کنند و سپس با استفاده از OCI runtime bundle استخراج‌شده، کانتینر جدیدی را با runc(8) ایجاد می‌نمایند. سپس تصویر دوباره با umoci-repack(1) بسته‌بندی می‌شود.

% skopeo copy docker://opensuse/amd64:42.2 oci:image:latest
# umoci unpack --image image bundle
# runc run -b bundle ctr
[ container session ]
# umoci repack --image image bundle

با استفاده از --rootless همچنین می‌توان مثال بالا را بدون دسترسی ریشه (root) اجرا کرد. umoci پیکربندی‌ای تولید می‌کند که با کانتینرهای بدون ریشه در runc(8) سازگار است.

% skopeo copy docker://opensuse/amd64:42.2 oci:image:latest
% umoci unpack --image image --rootless bundle
% runc --root $HOME/runc run -b bundle ctr
[ rootless container session ]
% umoci repack --image image --rootless bundle

umoci(1), umoci-repack(1), runc(8)

umoci unpack