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

umoci insert - درج محتوا در یک تصویر OCI

umoci insert --image=image[:tag] [--tag=new-tag] [--compress=compression-type] [--opaque] [--rootless] [--uid-map=value] [--uid-map=value] [--no-history] [--history.comment=comment] [--history.created_by=created_by] [--history.author=author] [--history-created=date] source target

umoci insert [options] --whiteout target

در شکل نخست، محتویات source را در تصویر OCI مشخص‌شده توسط --image درج می‌کند -- آن را رونویسی می‌کند مگر این‌که --tag را مشخص کنید. این کار با ایجاد یک لایه جدید حاوی تنها محتویات source با نام target انجام می‌شود. source می‌تواند یک فایل یا دایرکتوری باشد، و در حالت دوم به صورت بازگشتی پیمایش خواهد شد. اگر --opaque مشخص شده باشد، هر مسیری زیر target در لایه‌های پیشین تصویر (با فرض این‌که target یک دایرکتوری است) حذف خواهد شد.

در شکل دوم، یک «مدخل حذف» (deletion entry) درون تصویر OCI برای target درج می‌کند. این کار با درج یک لایه شامل تنها یک مدخل whiteout برای مسیر داده‌شده انجام می‌شود.

توجه داشته باشید که این دستور با ایجاد یک لایه جدید کار می‌کند، بنابراین نباید برای حذف (یا جایگزینی) اطلاعات محرمانه (secrets) از یک تصویرِ از پیش ساخته‌شده استفاده شود. برای چگونگی انجام درست این کار از طریق ایجاد نکردن لایه‌های حاوی اطلاعات محرمانه از همان ابتدا، umoci-config(1) و --config.volume را ببینید.

اگر --no-history مشخص نشده باشد، یک مدخل تاریخچه برای این تغییر به تصویر برچسب‌خورده OCI الحاق می‌شود (که پرچم‌های گوناگون --history. مقادیر استفاده‌شده را کنترل می‌کنند). برای مشاهده تاریخچه، umoci-stat(1) را ببینید.

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

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

--tag=new-tag
نام برچسب برای تصویر تغییریافته؛ در صورت عدم تعیین، برچسب اصلی ارائه‌شده به --image بازنویسی خواهد شد.

--compress=compression-type
نوع فشرده‌سازی مورد استفاده هنگام ایجاد یک لایه جدید را مشخص می‌کند. انواع فشرده‌سازی پشتیبانی‌شده عبارتند از none، gzip و zstd. دستور umoci-unpack(1) به‌طور شفاف از تمامی روش‌های فشرده‌سازی که می‌توانید با --compress مشخص کنید پشتیبانی می‌کند.


مقدار ویژهٔ auto باعث می‌شود umoci(1) مناسب‌ترین الگوریتم فشرده‌سازی را بر اساس روش فشرده‌سازی لایه‌های پیشین به‌طور خودکار انتخاب کند (تلاش خواهد کرد از الگوریتم فشرده‌سازی جدیدترین لایه‌ای که از آن پشتیبانی می‌کند استفاده کند). توجه داشته باشید که auto هرگز فشرده‌سازی none را به‌طور خودکار انتخاب نمی‌کند، زیرا فشرده نکردن آرشیوهای tar(1) به‌هیچ‌وجه توصیه نمی‌شود.


اگر هیچ compression-type مشخص نشود، مقدار پیش‌فرض auto خواهد بود.

--opaque
(با فرض این‌که target یک دایرکتوری است.) یک مدخل سفیدپوشی کدر (opaque whiteout) برای target اضافه می‌کند تا هر مسیر فرزندی از target در لایه‌های پیشین توسط مدخل جدید برای target ماسک شود، که فقط شامل محتویات source خواهد بود. این گزینه امکان جایگزینی کامل یک دایرکتوری را در مقایسه با ادغام مدخل‌های دایرکتوری فراهم می‌کند.

--whiteout
یک مدخل حذف برای target اضافه می‌کند، تا در استخراج‌های بعدی تصویر وجود نداشته باشد.

--rootless
پشتیبانی از درج بدون ریشه (rootless) را فعال می‌کند. این قابلیت اجازه می‌دهد umoci-insert(1) توسط کاربر بدون امتیاز استفاده شود. استفاده از این پرچم به معنای اعمال ضمنی --uid-map=0:$(id -u):1 و --gid-map=0:$(id -g):1 و همچنین فعال‌سازی چندین ویژگی برای شبیه‌سازی بخش‌هایی از فرایند بازگشتی به منظور ایجاد شبیه‌ترین نسخه ممکن از سیستم‌فایل برای درج است.

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

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

--no-history
باعث می‌شود هیچ مدخل تاریخچه‌ای برای این عملیات افزوده نشود. استفاده از این گزینه با umoci-insert(1) توصیه نمی‌شود، زیرا باعث می‌شود تاریخچه شامل تمامی لایه‌های تصویر نباشد -- و در نتیجه سبب سردرگمی ابزارهایی خواهد شد که به تاریخچه تصویر نگاه می‌کنند.

--history.comment=comment
توضیح برای مدخل تاریخچهٔ مربوط به این تغییر تصویر. در صورت عدم تعیین، umoci(1) یک مقدار وابسته به پیاده‌سازی تولید خواهد کرد.

--history.created_by=created_by
مدخل CreatedBy برای مدخل تاریخچهٔ مربوط به این تغییر تصویر. در صورت عدم تعیین، umoci(1) یک مقدار وابسته به پیاده‌سازی تولید خواهد کرد.

--history.author=author
مقدار پدیدآورنده (Author) برای مدخل تاریخچهٔ مربوط به این تغییر تصویر. در صورت عدم تعیین، این مقدار برابر با مقدار پدیدآورنده تصویر پس از اعمال هرگونه تغییر توسط این فراخوانی از umoci-config(1) خواهد بود.

--history-created=date
تاریخ ایجاد برای مدخل تاریخچهٔ مربوط به این تغییر تصویر. این مقدار باید یک برچسب زمانی با قالب ISO8601 باشد (date(1) را ببینید). در صورت عدم تعیین، زمان فعلی استفاده می‌شود.

دستور زیر یک فایل mybinary را در مسیر /usr/bin/mybinary و یک دایرکتوری myconfigdir را در مسیر /etc/myconfigdir درج می‌کند. لازم به ذکر است که اگر /etc/myconfigdir از قبل در تصویر وجود داشته باشد، محتویات دو دایرکتوری ادغام می‌شوند (و لایه جدیدتر اولویت خواهد داشت).

% umoci insert --image oci:foo mybinary /usr/bin/mybinary
% umoci insert --image oci:foo myconfigdir /etc/myconfigdir

و در این مثال‌ها /usr/bin/mybinary را حذف می‌کنیم و کل /etc را با myetcdir جایگزین می‌کنیم (به‌طوری که هیچ‌یک از مدخل‌های قدیمی /etc هنگام اجرای umoci-unpack(1) وجود نخواهند داشت).

% umoci insert --image oci:foo --whiteout /usr/bin/mybinary
% umoci insert --image oci:foo --opaque myetcdir /etc

umoci(1), umoci-repack(1), umoci-raw-add-layer(1)

umoci insert