| skopeo-sync(1)() | skopeo-sync(1)() |
نام (NAME)
skopeo-sync - همگامسازی ایمیجها بین مخازن رجیستری و دایرکتوریهای محلی.
خلاصه دستور (SYNOPSIS)
skopeo sync [options] --src transport --dest transport source destination
توضیحات (DESCRIPTION)
همگامسازی ایمیجها میان مخازن رجیستری و دایرکتوریهای محلی. این همگامسازی با رونوشت گرفتن از تمامی ایمیجهای موجود در source به destination انجام میشود - امری که هنگام همگامسازی آینه (mirror) محلی رجیستری کانتینر یا پر کردن رجیستریهای در حال اجرا در محیطهای ایزوله (air-gapped) بسیار کاربردی است.
برخلاف سایر دستورهای skopeo، دستور skopeo sync نیازمند آن است که پروتکلهای انتقال (transports) مبدأ و مقصد بهطور جداگانه از source و destination مشخص شوند. یکی از مشکلات افزودن پیشوند روش انتقال به مقصد این است که رجیستری docker://hostname:port ممکن است بهاشتباه بهعنوان یک ارجاع ایمیج در یک رجیستری غیراستاندارد (non-fully qualified) تفسیر شود که در آن hostname نام ایمیج و port برچسب (tag) آن تلقی گردد.
روشهای
انتقال (transports)
دردسترس
برای source:
- docker (برای
مثال --src docker):
مقدار source یک
مخزن
میزبانیشده
روی یک
رجیستری
کانتینر
است (مانند:
registry.example.com/busybox).
اگر هیچ تگی
برای ایمیج
مشخص نشود،
skopeo sync تمامی
برچسبهای
یافتشده
در آن مخزن
را رونوشت
میکند.
- dir (برای
مثال --src dir):
مقدار source
مسیر یک
دایرکتوری
محلی است
(مانند: /media/usb/).
برای قالب
ایمیج محلی
به skopeo(1) بخش dir:path
مراجعه
کنید.
- yaml (برای
مثال --src yaml):
مقدار source
مسیر یک
فایل YAML محلی
است.
فایل YAML باید
فهرستی از
ایمیجهایی
را که باید
از
رجیستریهای
کانتینر
مختلف کپی
شوند مشخص
کند
(دایرکتوریهای
محلی
پشتیبانی
نمیشوند).
برای اطلاع
از ساختار
این فایل به
بخش
«مثالها
(EXAMPLES)» مراجعه
نمایید.
روشهای
انتقال (transports)
دردسترس
برای destination:
- docker (برای
مثال --dest docker):
مقدار destination یک
رجیستری
کانتینر
است (مانند:
my-registry.local.lan).
- dir (برای
مثال --dest dir):
مقدار destination
مسیر یک
دایرکتوری
محلی است
(مانند: /media/usb/).
بهازای هر
ایمیج
کپیشده،
یک
دایرکتوری
برای هر 'image:tag'
مبدأ ایجاد
میشود.
هنگامی که گزینهٔ --scoped مشخص شود، مسیر ایمیج مبدأ بهعنوان پیشوند ایمیجها اضافه میشود تا بتوان چندین ایمیج با نام یکسان را در destination ذخیره کرد.
گزینهها (OPTIONS)
همچنین برای گزینههایی که پیش از نام زیردستور قرار میگیرند، به skopeo(1) مراجعه کنید.
--all, -a اگر یکی از ایمیجها در src به فهرستی از ایمیجها اشاره کند، بهجای رونوشت صرفاً ایمیجی که با سیستمعامل و معماری فعلی مطابقت دارد (بسته به استفاده از گزینههای سراسری --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 استفاده میکند.
--dry-run
اجرای همگامسازی بدون رونوشت واقعی دادهها به مقصد (اجرای آزمایشی).
--src, -s transport پروتکل انتقال (transport) برای مخزن مبدأ.
--dest, -d transport پروتکل انتقال مقصد.
--format, -f manifest-type نوع مانیفست (oci، v2s1 یا v2s2) برای استفاده در هنگام همگامسازی ایمیج(ها) به یک مقصد (پیشفرض، نوع مانیفست مبدأ بههمراه حالتهای بازگشتی یا fallback است).
--help, -h
چاپ راهنمای استفاده از دستور
--scoped افزودن مسیر ایمیج مبدأ بهعنوان پیشوند ایمیجها، بهطوری که بتوان چند ایمیج با نام یکسان را در destination ذخیره نمود.
--append-suffix tag-suffix رشتهای که به انتهای برچسبهای مقصد افزوده میشود.
--digestfile path
پس از رونوشت ایمیجها از مبدأ، دایجست (خلاصه کد هش) ایمیجهای حاصل را همراه با مرجع ایمیج (Image Reference) مینویسد.
sha256:bf91f90823248017a4f920fb541727fa8368dc6cf377a7debbd271cf6a31c8a7 docker://myhost.com/alpine:edge sha256:31603596830fc7e56753139f9c2c6bd3759e48a850659506ebfb885d1cf3aef5 docker://myhost.com/postgres:14.3
--preserve-digests
حفظ دایجستها (digests) در طول فرایند کپی. در صورت عدم امکان حفظ دایجست، با خطا مواجه میشود.
این گزینه تغییری در آنچه کپی خواهد شد ایجاد نمیکند؛ استفادهٔ همزمان از گزینهٔ --all را مد نظر قرار دهید.
--remove-signatures عدم کپی امضاها (در صورت وجود) از source-image. این کار هنگام رونوشت یک ایمیج امضاشده به مقصدی که از امضا پشتیبانی نمیکند، ضروری است.
--remove-list-signatures
امضای لیست مانیفست کپی نشود، در حالی که امضاهای هر نسخه (per-instance) حفظ گردند. این گزینه کنترل دقیقتری نسبت به --remove-signatures فراهم میکند که همهٔ امضاها را حذف مینماید.
--sign-by key-id
افزودن یک امضای «simple signing» با استفاده از آن شناسه کلید (key ID) برای نام ایمیج متناظر با 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
عبارت عبور (passphrase) مورد استفاده هنگام امضا کردن با --sign-by، --sign-by-sigstore-private-key یا --sign-by-sq-fingerprint. تنها سطر اول خوانده خواهد شد. عبارت عبوری که در یک فایل ذخیره شده باشد، در صورتی که سایر کاربران بتوانند این فایل را بخوانند از نظر امنیتی قابل اتکا نیست. تا حد امکان از این گزینه استفاده نکنید.
--src-creds username[:password] جهت دسترسی به رجیستری مبدأ.
--dest-creds username[:password] جهت دسترسی به رجیستری مقصد.
--src-cert-dir path استفاده از گواهیها (*.crt، *.cert، *.key) در مسیر path برای اتصال به رجیستری یا دیمن مبدأ.
--src-no-creds دسترسی به رجیستری بهصورت ناشناس.
--src-tls-verify=bool الزام به HTTPS و تأیید گواهیها هنگام ارتباط با رجیستری کانتینر یا دیمن مبدأ. پیشفرض، تنظیمات مدخل رجیستری مبدأ در registry.conf است.
--dest-cert-dir path استفاده از گواهیها (*.crt، *.cert، *.key) در مسیر path برای اتصال به رجیستری یا دیمن مقصد.
--dest-no-creds دسترسی به رجیستری بهصورت ناشناس.
--dest-tls-verify=bool الزام به HTTPS و تأیید گواهیها هنگام ارتباط با رجیستری کانتینر یا دیمن مقصد. پیشفرض، تنظیمات مدخل رجیستری مقصد در registry.conf است..PP --src-registry-token Bearer token برای دسترسی به رجیستری مبدأ.
--dest-registry-token Bearer token برای دسترسی به رجیستری مقصد.
--retry-times
تعداد دفعات تلاش مجدد. بهطور پیشفرض، هیچ تلاشی مجددی صورت نمیگیرد.
--retry-delay
تأخیر ثابت میان تلاشهای مجدد. در صورت عدم تنظیم (یا اگر روی 0s تنظیم شود)، زمان انتظار برای تلاش مجدد بر اساس تعداد دفعات تلاش ناموفق بهصورت نمایی افزایش مییابد.
--keep-going در صورت بروز هرگونه خطا هنگام کپی کردن ایمیجها، آن خطاها ثبت شده و فرایند همگامسازی سایر ایمیجها ادامه مییابد و در پایان با وضعیت شکست خاتمه مییابد.
--src-username
نام کاربری برای دسترسی به رجیستری مبدأ.
--src-password
گذرواژه برای دسترسی به رجیستری مبدأ.
--dest-username
نام کاربری برای دسترسی به رجیستری مقصد.
--dest-password
گذرواژه برای دسترسی به رجیستری مقصد.
مثالها (EXAMPLES)
همگامسازی با یک دایرکتوری محلی
$ skopeo sync --src docker --dest dir registry.example.com/busybox /media/usb
ایمیجها در این مسیر قرار میگیرند:
/media/usb/busybox:1-glibc /media/usb/busybox:1-musl /media/usb/busybox:1-ubuntu ... /media/usb/busybox:latest
همگامسازی با یک رجیستری کانتینر از دایرکتوری محلی
ایمیجها در این مسیر قرار دارند:
/media/usb/busybox:1-glibc
اجرای همگامسازی:
$ skopeo sync --src dir --dest docker /media/usb/busybox:1-glibc my-registry.local.lan/test/
محتوای رجیستری مقصد:
REPO TAGS my-registry.local.lan/test/busybox 1-glibc $ skopeo sync --src docker --dest dir --scoped registry.example.com/busybox /media/usb
تصاویر در این مسیر قرار میگیرند:
/media/usb/registry.example.com/busybox:1-glibc /media/usb/registry.example.com/busybox:1-musl /media/usb/registry.example.com/busybox:1-ubuntu ... /media/usb/registry.example.com/busybox:latest
همگامسازی با یک رجیستری کانتینر
$ skopeo sync --src docker --dest docker registry.example.com/busybox my-registry.local.lan
محتوای رجیستری مقصد:
REPO TAGS registry.local.lan/busybox 1-glibc, 1-musl, 1-ubuntu, ..., latest
همگامسازی با یک رجیستری کانتینر با حفظ مخزن
$ skopeo sync --src docker --dest docker registry.example.com/repo/busybox my-registry.local.lan/repo
محتوای رجیستری مقصد:
REPO TAGS registry.local.lan/repo/busybox 1-glibc, 1-musl, 1-ubuntu, ..., latest
همگامسازی با یک رجیستری کانتینر با پسوند برچسب
$ skopeo sync --src docker --dest docker --append-suffix '-mirror' registry.example.com/busybox my-registry.local.lan
محتوای رجیستری مقصد:
REPO TAGS registry.local.lan/busybox 1-glibc-mirror, 1-musl-mirror, 1-ubuntu-mirror, ..., latest-mirror
محتوای فایل YAML (به عنوان source برای **--src yaml** استفاده میشود)
registry.example.com:
images:
busybox: []
redis:
- "1.0"
- "2.0"
- "sha256:0000000000000000000000000000000011111111111111111111111111111111"
images-by-tag-regex:
nginx: ^1\.13\.[12]-alpine-perl$
images-by-semver:
alpine: ">= 3.12.0"
credentials:
username: john
password: this is a secret
tls-verify: true
cert-dir: /home/john/certs
quay.io:
tls-verify: false
images:
coreos/etcd:
- latest
اگر نام فایل yaml برابر با sync.yml باشد، اجرای همگامسازی بدین صورت است:
$ skopeo sync --src yaml --dest docker sync.yml my-registry.local.lan/repo/
این دستور تصاویر زیر را کپی خواهد کرد: - مخزن registry.example.com/busybox: تمام تصاویر، زیرا برچسبی مشخص نشده است. - مخزن registry.example.com/redis: تصاویر دارای برچسبهای "1.0" و "2.0" به همراه تصویری با دایجست "sha256:0000000000000000000000000000000011111111111111111111111111111111". - مخزن registry.example.com/nginx: تصاویر دارای برچسبهای "1.13.1-alpine-perl" و "1.13.2-alpine-perl". - مخزن quay.io/coreos/etcd: تصاویر دارای برچسب "latest". - مخزن registry.example.com/alpine: تمام تصاویر با برچسبهایی که با شرط نگارش معنایی (semantic version) ">= 3.12.0" مطابقت دارند ("3.12.0"، "3.12.1"، ...، "4.0.0"، ...).
فهرست کامل مقایسههای ممکن برای نگارش معنایی را میتوان در مستندات کتابخانه بالادستی یافت: https://github.com/Masterminds/semver/tree/v3.2.0#basic-comparisons
ترتیببندی و اولویت نگارشها همانگونه که در اینجا تعریف شده، در نظر گرفته میشود: https://semver.org/#spec-item-11
برای رجیستری registry.example.com، از اعتبارنامههای "john"/"this is a secret" استفاده میشود و گواهیهای TLS سرور در /home/john/certs قرار دارند.
اعتبارسنجی TLS به طور معمول فعال است و میتوان با تنظیم tls-verify روی false آن را غیرفعال کرد. در مثال بالا، اعتبارسنجی TLS برای registry.example.com فعال بوده، در حالی که برای quay.io غیرفعال شده است..SH "همچنین ببینید (SEE ALSO)" skopeo(1), skopeo-login(1), docker-login(1), containers-auth.json(5), containers-policy.json(5), containers-transports(5)
نویسندگان (AUTHORS)
Flavio Castelli fcastelli@suse.com ⟨mailto:fcastelli@suse.com⟩, Marco Vedovati mvedovati@suse.com ⟨mailto:mvedovati@suse.com⟩