| skopeo-copy(1)() | skopeo-copy(1)() |
نام (NAME)
skopeo-copy - کپی کردن یک تصویر (مانیفست، لایههای فایلسیستم، امضاها) از یک مکان به مکانی دیگر
خلاصه دستور (SYNOPSIS)
skopeo copy [گزینهها] source-image destination-image
توضیحات (DESCRIPTION)
یک تصویر (مانیفست، لایههای فایلسیستم، امضاها) را از یک مکان به مکانی دیگر کپی میکند.
از سیاست اعتماد (trust policy) سیستم برای اعتبارسنجی تصاویر استفاده میکند؛ تصاویری که توسط این سیاست مورد اعتماد نباشند رد میشوند.
برای source-image از قالب «نام تصویر» شرح داده شده در بالا استفاده کنید.
برای destination-image از قالب «نام تصویر» شرح داده شده در بالا استفاده کنید.
source-image و destination-image کاملاً مستقل از یکدیگر تفسیر میشوند؛ برای مثال، نام مقصد به طور خودکار هیچ بخشی از نام مبدأ را به ارث نمیبرد.
گزینهها (OPTIONS)
همچنین برای گزینههایی که قبل از نام زیرفرمان قرار میگیرند، skopeo(1) را ببینید.
--additional-tag=strings
تگهای اضافی (از docker-archive پشتیبانی میکند).
--all, -a
اگر source-image به فهرستی از تصاویر اشاره کند، به جای کپی کردن تنها تصویری که با سیستمعامل و معماری فعلی مطابقت دارد (با در نظر گرفتن گزینههای سراسری --override-os، --override-arch و --override-variant)، تلاش میکند تمام تصاویر موجود در فهرست و خود فهرست را کپی کند.
--authfile path
مسیر فایل گواهیهای اصلی رجیستری. در لینوکس، پیشفرض ${XDG_RUNTIME_DIR}/containers/auth.json است. برای جزئیات بیشتر دربارهٔ سازوکار جستجوی گواهیها و پیشفرضها در سایر پلتفرمها، containers-auth.json(5) را ببینید.
از skopeo login برای مدیریت گواهیها استفاده کنید.
مقدار پیشفرض این گزینه از متغیر محیطی REGISTRY\_AUTH\_FILE خوانده میشود.
--src-authfile path
مسیر فایل گواهیهای رجیستری اصلی برای رجیستری مبدأ. در صورت مشخص نشدن، از مسیر دادهشده توسط --authfile استفاده میکند.
--dest-authfile path
مسیر فایل گواهیهای رجیستری اصلی برای رجیستری مقصد. در صورت مشخص نشدن، از مسیر دادهشده توسط --authfile استفاده میکند.
--dest-shared-blob-dir directory
دایرکتوری مورد استفاده برای به اشتراکگذاری blobها در میان مخازن OCI.
--digestfile path
پس از کپی کردن تصویر، دایجست تصویر حاصل را در فایل مینویسد.
--preserve-digests
حفظ دایجستها در طول فرایند کپی. اگر دایجست قابل حفظ نباشد، عملیات با شکست مواجه میشود.
این گزینه مواردی را که کپی خواهند شد تغییر نمیدهد؛ استفادهٔ همزمان از --all را مد نظر قرار دهید.
--encrypt-layer ints
آزمایشی (Experimental) اندیس لایهها بر پایهٔ صفر، همراه با پشتیبانی از اندیسگذاری منفی (برای مثال 0 لایهٔ اول است و -1 آخرین لایه است).
--format, -f manifest-type
نوع مانیفست (oci، v2s1 یا v2s2) برای استفاده در مقصد (پیشفرض همان نوع مانیفست مبدأ با امکان fallback است).
--help, -h
نمایش راهنمای استفاده
--multi-arch option
کنترل آنچه کپی میشود در صورتی که source-image به یک تصویر چندمعماری اشاره کند. پیشفرض system است.
گزینهها:
- system: تنها
تصویری را
کپی میکند
که با
معماری
سیستم
مطابقت
دارد
- all: تمام
تصویر
چندمعماری
را کپی
میکند
- index-only: تنها
نمایه (index) را
کپی میکند
- platform-list: تنها
پلتفرمهای
خاص را کپی
میکند
(فهرستی از
جفتهای
سیستمعامل/معماری
جداشده با
ویرگول،
مانند linux/amd64,linux/arm64)
گزینهٔ index-only و platform-list هر دو فهرستهای مانیفست تنک (sparse) ایجاد میکنند که معمولاً با خطا مواجه میشوند، مگر اینکه تصاویر به ازای هر معماریِ ارجاعشده از قبل در مقصد موجود باشند، یا رجیستری هدف از نمایههای تنک پشتیبانی کند.
هنگام مشخص کردن یک فهرست پلتفرم، تمام گونههای فشردهسازی و سایر تغییرات برای هر پلتفرم کپی میشوند.
--quiet, -q
عدم نمایش اطلاعات خروجی هنگام کپی تصاویر.
--remove-signatures
امضاها را (در صورت وجود) از source-image کپی نمیکند. این گزینه هنگام کپی یک تصویر امضاشده به مقصدی که از امضا پشتیبانی نمیکند، ضروری است.
--remove-list-signatures
امضای فهرست مانیفست را کپی نمیکند در حالی که امضاهای هر نمونه (instance) را حفظ مینماید. این گزینه کنترل دقیقتری نسبت به --remove-signatures که تمام امضاها را حذف میکند فراهم میسازد.
--strip-removed-platforms
هنگام کپی تنها زیرمجموعهای از پلتفرمها از یک تصویر چندمعماری (با استفاده از --multi-arch به همراه فهرست پلتفرمها)، فهرست مانیفستی را مینویسد که تنها شامل پلتفرمهای کپیشده است، به جای اینکه ورودیهایی را باقی بگذارد که به تصاویر پلتفرمهای ناموجود در مقصد اشاره دارند. این گزینه برای رجیستریهایی مفید است که فهرستهای مانیفست حاوی ارجاع به تصاویر ناموجود را رد میکنند.
نکته: این گزینه نیازمند آن است که امضاها با استفاده از --remove-signatures یا --remove-list-signatures حذف شوند، زیرا حذف نمونهها امضای فهرست مانیفست را باطل کرده و دایجست فهرست مانیفست را تغییر میدهد. در صورت وجود امضاها و حذف نشدن صریح آنها، عملیات با شکست مواجه خواهد شد.
--sign-by key-id
افزودن یک امضای «simple signing» با استفاده از آن شناسهٔ کلید برای نام تصویری که منطبق بر destination-image است.
--sign-by-sigstore param-file
افزودن یک امضای sigstore بر اساس گزینههای موجود در فایل پارامتر امضای sigstore کانتینرها، یعنی param-file. برای جزئیات مربوط به قالب فایل، containers-sigstore-signing-params.yaml(5) را ببینید.
--sign-by-sigstore-private-key path
افزودن یک امضای sigstore با استفاده از یک کلید خصوصی در path برای نام تصویری که منطبق بر destination-image است.
--sign-by-sq-fingerprint fingerprint
افزودن یک امضای «simple signing» با استفاده از کلید Sequoia-PGP با اثرانگشت (fingerprint) مشخصشده.
--sign-passphrase-file path
عبارت عبور مورد استفاده هنگام امضا با --sign-by، --sign-by-sigstore-private-key یا --sign-by-sq-fingerprint. تنها سطر اول خوانده خواهد شد. عبارت عبوری که در یک فایل ذخیره شده باشد، در صورتی که سایر کاربران بتوانند آن فایل را بخوانند، از نظر امنیتی جای تردید دارد. در صورت امکان، به هیچ وجه از این گزینه استفاده نکنید..PP --sign-identity reference
هویت مورد استفاده هنگام امضای تصویر. این هویت باید یک docker reference کاملاً مشخص باشد. اگر هویت مشخص نشود، از docker reference مقصد استفاده خواهد شد.
--src-shared-blob-dir directory
دایرکتوری مورد استفاده برای به اشتراکگذاری blobها میان مخازن OCI.
--encryption-key protocol:keyfile
پروتکل رمزنگاری را مشخص میکند که میتواند JWE (RFC7516)، PGP (RFC4880) و PKCS7 (RFC2315) باشد و همچنین دادههای کلید مورد نیاز برای رمزنگاری تصویر را تعیین میکند. برای نمونه، jwe:/path/to/key.pem یا pgp:admin@example.com یا pkcs7:/path/to/x509-file.
--decryption-key key[:passphrase]
کلید مورد استفاده برای رمزگشایی تصاویر. کلید میتواند به کلیدها و/یا گواهیها اشاره کند. رمزگشایی با تمام کلیدها امتحان خواهد شد. اگر کلید با یک عبارت عبور (passphrase) محافظت میشود، باید در آرگومان ارسال گردد و در غیر این صورت حذف شود.
--src-creds username[:password]
اطلاعات احراز هویت برای دسترسی به رجیستری مبدأ.
--dest-compress
فشردهسازی لایههای تصویر tarball هنگام ذخیره در دایرکتوری با استفاده از انتقالدهنده 'dir'. (پیشفرض همان نوع فشردهسازی مبدأ است).
--dest-decompress
از حالت فشرده خارج کردن لایههای تصویر tarball هنگام ذخیره در دایرکتوری با استفاده از انتقالدهنده 'dir'. (پیشفرض همان نوع فشردهسازی مبدأ است).
--dest-oci-accept-uncompressed-layers
مجاز دانستن لایههای تصویر فشردهنشده هنگام ذخیره در یک تصویر OCI با استفاده از انتقالدهنده 'oci'. (پیشفرض فشردهسازی مواردی است که فشرده نیستند).
--dest-creds username[:password]
اطلاعات احراز هویت برای دسترسی به رجیستری مقصد.
--src-cert-dir path
استفاده از گواهیهای موجود در path (*.crt, *.cert, *.key) برای اتصال به رجیستری یا دیمن مبدأ.
--src-no-creds
دسترسی به رجیستری بهصورت ناشناس.
--src-tls-verify=bool
الزام به HTTPS و اعتبارسنجی گواهیها هنگام ارتباط با رجیستری کانتینر مبدأ یا دیمن. پیشفرض، تنظیمات رجیستری مبدأ است.
--dest-cert-dir path
استفاده از گواهیهای موجود در path (*.crt, *.cert, *.key) برای اتصال به رجیستری یا دیمن مقصد.
--dest-no-creds
دسترسی به رجیستری بهصورت ناشناس.
--dest-tls-verify=bool
الزام به HTTPS و اعتبارسنجی گواهیها هنگام ارتباط با رجیستری کانتینر مقصد یا دیمن. پیشفرض، تنظیمات رجیستری مقصد است.
--src-daemon-host host
کپی از دیمن docker در host. اگر host با tcp:// آغاز شود، HTTPS بهطور پیشفرض فعال است. برای استفاده از HTTP معمولی، از ساختار http:// استفاده کنید (پیشفرض unix:///var/run/docker.sock است).
--dest-daemon-host host
کپی به دیمن docker در host. اگر host با tcp:// آغاز شود، HTTPS بهطور پیشفرض فعال است. برای استفاده از HTTP معمولی، از ساختار http:// استفاده کنید (پیشفرض unix:///var/run/docker.sock است).
--dest-compress-format format
قالب فشردهسازی مورد استفاده را مشخص میکند. مقادیر پشتیبانیشده عبارتند از: gzip، zstd و zstd:chunked. zstd:chunked با رمزنگاری تصاویر ناسازگار است و در این حالت، همراه با یک هشدار با آن همانند zstd رفتار خواهد شد.
--dest-compress-level format
سطح فشردهسازی مورد استفاده را مشخص میکند. این مقدار وابسته به الگوریتم فشردهسازی بهکاررفته است؛ برای مثال برای zstd مقادیر پذیرفتهشده در محدودهٔ 1-20 (شامل طرفین) است، در حالی که برای gzip این محدوده 1-9 (شامل طرفین) میباشد.
--dest-force-compress-format
تضمین میکند که الگوریتم فشردهسازی تعیینشده در --dest-compress-format بهطور انحصاری استفاده شود.
--src-registry-token token
توکن Bearer برای دسترسی به رجیستری مبدأ.
--dest-registry-token token
توکن Bearer برای دسترسی به رجیستری مقصد.
--dest-precompute-digests
محاسبهٔ پیشاپیش چکیدهها (digests) برای اطمینان از عدم بارگذاری لایههایی که در حال حاضر در رجیستری مقصد وجود دارند. لایههایی با چکیدههای اولیه نامشخص (مانند فشردهسازی «on the fly») بهطور موقت روی دیسک جریاندهی (stream) خواهند شد.
--retry-times
تعداد دفعات تلاش مجدد. بهطور پیشفرض، هیچ تلاش مجددی صورت نمیگیرد.
--retry-delay
تأخیر ثابت بین دفعات تلاش مجدد. اگر تنظیم نشود (یا برابر 0s باشد)، زمان انتظار بر اساس تعداد تلاشهای ناموفق بهصورت نمایی افزایش خواهد یافت.
--src-username
نام کاربری برای دسترسی به رجیستری مبدأ.
--src-password
گذرواژه برای دسترسی به رجیستری مبدأ.
--dest-username
نام کاربری برای دسترسی به رجیستری مقصد.
--dest-password
گذرواژه برای دسترسی به رجیستری مقصد.
--image-parallel-copies n
حداکثر تعداد لایههای تصویری که میتوانند بهطور همزمان کپی (pull/push) شوند. در صورت تنظیم نکردن این فیلد، مقادیر پیشفرض containers/image اعمال خواهند شد..SH "مثالها (EXAMPLES)" برای کپی کردن سادهٔ یک ایمیج از یک رجیستری به رجیستری دیگر:
$ skopeo copy docker://quay.io/skopeo/stable:latest docker://registry.example.com/skopeo:latest
برای کپی کردن لایههای ایمیج busybox از docker.io به یک دایرکتوری محلی:
$ mkdir -p /var/lib/images/busybox $ skopeo copy docker://busybox:latest dir:/var/lib/images/busybox $ ls /var/lib/images/busybox/* /tmp/busybox/2b8fd9751c4c0f5dd266fcae00707e67a2545ef34f9a29354585f93dac906749.tar /tmp/busybox/manifest.json /tmp/busybox/8ddc19f16526912237dd8af81971d5e4dd0587907234be2b83e249518d5b673f.tar
برای ایجاد یک بایگانی قابل استفاده توسط docker load (البته توجه داشته باشید که استفاده از یک رجیستری تقریباً همیشه کارآمدتر است):
$ skopeo copy docker://busybox:latest docker-archive:archive-file.tar:busybox:latest
برای کپی و امضا کردن یک ایمیج:
$ skopeo copy --sign-by dev@example.com containers-storage:example/busybox:streaming docker://example/busybox:gold
برای کپی کردن تنها پلتفرمهای مشخصی از یک ایمیج چندمعماری (یک فهرست مانیفست تنک/پراکنده ایجاد میکند):
$ skopeo copy --multi-arch=linux/amd64,linux/arm64 docker://quay.io/skopeo/stable:latest docker://registry.example.com/skopeo:latest
برای کپی کردن پلتفرمهای خاص و حذف فهرست مانیفست تنک (برای رجیستریهایی که از فهرستهای پراکنده پشتیبانی نمیکنند):
$ skopeo copy --multi-arch=linux/amd64,linux/arm64 --strip-removed-platforms --remove-list-signatures docker://quay.io/skopeo/stable:latest docker://registry.example.com/skopeo:latest
برای رمزنگاری یک ایمیج:
$ skopeo copy docker://docker.io/library/nginx:1.17.8 oci:local_nginx:1.17.8 $ openssl genrsa -out private.key 1024 $ openssl rsa -in private.key -pubout > public.key $ skopeo copy --encryption-key jwe:./public.key oci:local_nginx:1.17.8 oci:try-encrypt:encrypted
برای رمزگشایی یک ایمیج:
$ skopeo copy --decryption-key ./private.key oci:try-encrypt:encrypted oci:try-decrypt:decrypted
برای کپی کردن یک ایمیج رمزنگاریشده بدون رمزگشایی:
$ skopeo copy oci:try-encrypt:encrypted oci:try-encrypt-copy:encrypted
برای رمزگشایی ایمیجی که به بیش از یک کلید نیاز دارد:
$ skopeo copy --decryption-key ./private1.key --decryption-key ./private2.key --decryption-key ./private3.key oci:try-encrypt:encrypted oci:try-decrypt:decrypted
ایمیجهای کانتینر همچنین میتوانند با مشخص کردن اندیس لایه، بهصورت جزئی رمزنگاری شوند. نمایهگذاری لایهها بر پایهٔ ۰ است (0-indexed) و از نمایهگذاری منفی نیز پشتیبانی میشود؛ یعنی ۰ لایهٔ نخست و -1 لایهٔ پایانی است.
فرض کنید از ۳ لایهای که ایمیج docker.io/library/nginx:1.17.8 از آنها تشکیل شده است، تنها میخواهیم لایهٔ دوم را رمزنگاری کنیم:
$ skopeo copy --encryption-key jwe:./public.key --encrypt-layer 1 oci:local_nginx:1.17.8 oci:try-encrypt:encrypted skopeo(1), skopeo-login(1), docker-login(1), containers-auth.json(5), containers-policy.json(5), containers-transports(5), containers-signature(5)
نویسندگان (AUTHORS)
Antonio Murdaca runcom@redhat.com ⟨mailto:runcom@redhat.com⟩, Miloslav Trmac mitr@redhat.com ⟨mailto:mitr@redhat.com⟩, Jhon Honce jhonce@redhat.com ⟨mailto:jhonce@redhat.com⟩