.nh .TH skopeo-sync(1) .SH "نام (NAME)" skopeo-sync \- همگام‌سازی ایمیج‌ها بین مخازن رجیستری و دایرکتوری‌های محلی. .SH "خلاصه دستور (SYNOPSIS)" \fBskopeo sync\fP [\fIoptions\fP] --src \fItransport\fP --dest \fItransport\fP \fIsource\fP \fIdestination\fP .SH "توضیحات (DESCRIPTION)" همگام‌سازی ایمیج‌ها میان مخازن رجیستری و دایرکتوری‌های محلی. این همگام‌سازی با رونوشت گرفتن از تمامی ایمیج‌های موجود در \fIsource\fP به \fIdestination\fP انجام می‌شود \- امری که هنگام همگام‌سازی آینه (mirror) محلی رجیستری کانتینر یا پر کردن رجیستری‌های در حال اجرا در محیط‌های ایزوله (air-gapped) بسیار کاربردی است. .PP برخلاف سایر دستورهای skopeo، دستور skopeo sync نیازمند آن است که پروتکل‌های انتقال (transports) مبدأ و مقصد به‌طور جداگانه از \fIsource\fP و \fIdestination\fP مشخص شوند\&. یکی از مشکلات افزودن پیشوند روش انتقال به مقصد این است که رجیستری \fBdocker://hostname:port\fR ممکن است به‌اشتباه به‌عنوان یک ارجاع ایمیج در یک رجیستری غیراستاندارد (non-fully qualified) تفسیر شود که در آن \fBhostname\fR نام ایمیج و \fBport\fR برچسب (tag) آن تلقی گردد. .PP روش‌های انتقال (transports) دردسترس برای \fIsource\fP: - \fIdocker\fP (برای مثال \fB--src docker\fR): مقدار \fIsource\fP یک مخزن میزبانی‌شده روی یک رجیستری کانتینر است (مانند: \fBregistry.example.com/busybox\fR). اگر هیچ تگی برای ایمیج مشخص نشود، skopeo sync تمامی برچسب‌های یافت‌شده در آن مخزن را رونوشت می‌کند. - \fIdir\fP (برای مثال \fB--src dir\fR): مقدار \fIsource\fP مسیر یک دایرکتوری محلی است (مانند: \fB/media/usb/\fR). برای قالب ایمیج محلی به skopeo(1) بخش \fBdir:\fP\fIpath\fP مراجعه کنید. - \fIyaml\fP (برای مثال \fB--src yaml\fR): مقدار \fIsource\fP مسیر یک فایل YAML محلی است. فایل YAML باید فهرستی از ایمیج‌هایی را که باید از رجیستری‌های کانتینر مختلف کپی شوند مشخص کند (دایرکتوری‌های محلی پشتیبانی نمی‌شوند). برای اطلاع از ساختار این فایل به بخش «مثال‌ها (EXAMPLES)» مراجعه نمایید. .PP روش‌های انتقال (transports) دردسترس برای \fIdestination\fP: - \fIdocker\fP (برای مثال \fB--dest docker\fR): مقدار \fIdestination\fP یک رجیستری کانتینر است (مانند: \fBmy-registry.local.lan\fR). - \fIdir\fP (برای مثال \fB--dest dir\fR): مقدار \fIdestination\fP مسیر یک دایرکتوری محلی است (مانند: \fB/media/usb/\fR). به‌ازای هر ایمیج کپی‌شده، یک دایرکتوری برای هر 'image:tag' مبدأ ایجاد می‌شود. .PP هنگامی که گزینهٔ \fB--scoped\fR مشخص شود، مسیر ایمیج مبدأ به‌عنوان پیشوند ایمیج‌ها اضافه می‌شود تا بتوان چندین ایمیج با نام یکسان را در \fIdestination\fP ذخیره کرد\&. .SH "گزینه‌ها (OPTIONS)" همچنین برای گزینه‌هایی که پیش از نام زیردستور قرار می‌گیرند، به skopeo(1) مراجعه کنید. .PP \fB--all\fP, \fB-a\fP اگر یکی از ایمیج‌ها در \fBsrc\fP به فهرستی از ایمیج‌ها اشاره کند، به‌جای رونوشت صرفاً ایمیجی که با سیستم‌عامل و معماری فعلی مطابقت دارد (بسته به استفاده از گزینه‌های سراسری --override-os، --override-arch و --override-variant)، تلاش می‌کند تمام ایمیج‌های موجود در فهرست و همچنین خودِ فهرست را کپی کند. .PP \fB--authfile\fP \fIpath\fP .PP مسیر فایل اعتبارنامه‌های رجیستری اصلی. در لینوکس، مقدار پیش‌فرض ${XDG_RUNTIME_DIR}/containers/auth.json است. برای جزئیات بیشتر درباره سازوکار جستجوی اطلاعات احراز هویت و پیش‌فرض‌ها در سایر پلتفرم‌ها، به \fBcontainers-auth.json\fP(5) مراجعه کنید. .PP برای مدیریت اعتبارنامه‌ها از \fBskopeo login\fR استفاده کنید. .PP مقدار پیش‌فرض این گزینه از متغیر محیطی \fBREGISTRY\\_AUTH\\_FILE\fR خوانده می‌شود. .PP \fB--src-authfile\fP \fIpath\fP .PP مسیر فایل اعتبارنامه‌های اصلی رجیستری برای رجیستری مبدأ. در صورت مشخص نشدن، از مسیر ارائه‌شده توسط \fB--authfile\fR استفاده می‌کند. .PP \fB--dest-authfile\fP \fIpath\fP .PP مسیر فایل اعتبارنامه‌های اصلی رجیستری برای رجیستری مقصد. در صورت مشخص نشدن، از مسیر ارائه‌شده توسط \fB--authfile\fR استفاده می‌کند. .PP \fB--dry-run\fP .PP اجرای همگام‌سازی بدون رونوشت واقعی داده‌ها به مقصد (اجرای آزمایشی). .PP \fB--src\fP, \fB-s\fP \fItransport\fP پروتکل انتقال (transport) برای مخزن مبدأ. .PP \fB--dest\fP, \fB-d\fP \fItransport\fP پروتکل انتقال مقصد. .PP \fB--format\fP, \fB-f\fP \fImanifest-type\fP نوع مانیفست (oci، v2s1 یا v2s2) برای استفاده در هنگام همگام‌سازی ایمیج(ها) به یک مقصد (پیش‌فرض، نوع مانیفست مبدأ به‌همراه حالت‌های بازگشتی یا fallback است). .PP \fB--help\fP, \fB-h\fP .PP چاپ راهنمای استفاده از دستور .PP \fB--scoped\fP افزودن مسیر ایمیج مبدأ به‌عنوان پیشوند ایمیج‌ها، به‌طوری که بتوان چند ایمیج با نام یکسان را در \fIdestination\fP ذخیره نمود\&. .PP \fB--append-suffix\fP \fItag-suffix\fP رشته‌ای که به انتهای برچسب‌های مقصد افزوده می‌شود. .PP \fB--digestfile\fP \fIpath\fP .PP پس از رونوشت ایمیج‌ها از مبدأ، دایجست (خلاصه کد هش) ایمیج‌های حاصل را همراه با مرجع ایمیج (Image Reference) می‌نویسد. .EX sha256:bf91f90823248017a4f920fb541727fa8368dc6cf377a7debbd271cf6a31c8a7 docker://myhost.com/alpine:edge sha256:31603596830fc7e56753139f9c2c6bd3759e48a850659506ebfb885d1cf3aef5 docker://myhost.com/postgres:14.3 .EE .PP \fB--preserve-digests\fP .PP حفظ دایجست‌ها (digests) در طول فرایند کپی. در صورت عدم امکان حفظ دایجست، با خطا مواجه می‌شود. .PP این گزینه تغییری در آنچه کپی خواهد شد ایجاد نمی‌کند؛ استفادهٔ هم‌زمان از گزینهٔ \fB--all\fR را مد نظر قرار دهید. .PP \fB--remove-signatures\fP عدم کپی امضاها (در صورت وجود) از \fIsource-image\fP\&. این کار هنگام رونوشت یک ایمیج امضاشده به مقصدی که از امضا پشتیبانی نمی‌کند، ضروری است. .PP \fB--remove-list-signatures\fP .PP امضای لیست مانیفست کپی نشود، در حالی که امضاهای هر نسخه (per-instance) حفظ گردند. این گزینه کنترل دقیق‌تری نسبت به \fB--remove-signatures\fP فراهم می‌کند که همهٔ امضاها را حذف می‌نماید. .PP \fB--sign-by\fP \fIkey-id\fP .PP افزودن یک امضای «simple signing» با استفاده از آن شناسه کلید (key ID) برای نام ایمیج متناظر با \fIdestination-image\fP .PP \fB--sign-by-sigstore\fP \fIparam-file\fP .PP افزودن یک امضای sigstore بر اساس گزینه‌های موجود در فایل پارامتر امضای sigstore کانتینرها، \fIparam-file\fP\&. برای جزئیات بیشتر درباره قالب این فایل به containers-sigstore-signing-params.yaml(5) مراجعه کنید. .PP \fB--sign-by-sigstore-private-key\fP \fIpath\fP .PP افزودن یک امضای sigstore با استفاده از کلید خصوصی موجود در \fIpath\fP برای نام ایمیج متناظر با \fIdestination-image\fP .PP \fB--sign-by-sq-fingerprint\fP \fIfingerprint\fP .PP افزودن یک امضای «simple signing» با استفاده از یک کلید Sequoia-PGP با اثرانگشت مشخص‌شدهٔ \fIfingerprint\fP\&. .PP \fB--sign-passphrase-file\fP \fIpath\fP .PP عبارت عبور (passphrase) مورد استفاده هنگام امضا کردن با \fB--sign-by\fR، \fB--sign-by-sigstore-private-key\fR یا \fB--sign-by-sq-fingerprint\fR\&. تنها سطر اول خوانده خواهد شد. عبارت عبوری که در یک فایل ذخیره شده باشد، در صورتی که سایر کاربران بتوانند این فایل را بخوانند از نظر امنیتی قابل اتکا نیست. تا حد امکان از این گزینه استفاده نکنید. .PP \fB--src-creds\fP \fIusername[:password]\fP جهت دسترسی به رجیستری مبدأ. .PP \fB--dest-creds\fP \fIusername[:password]\fP جهت دسترسی به رجیستری مقصد. .PP \fB--src-cert-dir\fP \fIpath\fP استفاده از گواهی‌ها (*.crt، *.cert، *.key) در مسیر \fIpath\fP برای اتصال به رجیستری یا دیمن مبدأ. .PP \fB--src-no-creds\fP دسترسی به رجیستری به‌صورت ناشناس. .PP \fB--src-tls-verify\fP=\fIbool\fP الزام به HTTPS و تأیید گواهی‌ها هنگام ارتباط با رجیستری کانتینر یا دیمن مبدأ. پیش‌فرض، تنظیمات مدخل رجیستری مبدأ در registry.conf است. .PP \fB--dest-cert-dir\fP \fIpath\fP استفاده از گواهی‌ها (*.crt، *.cert، *.key) در مسیر \fIpath\fP برای اتصال به رجیستری یا دیمن مقصد. .PP \fB--dest-no-creds\fP دسترسی به رجیستری به‌صورت ناشناس. .PP \fB--dest-tls-verify\fP=\fIbool\fP الزام به HTTPS و تأیید گواهی‌ها هنگام ارتباط با رجیستری کانتینر یا دیمن مقصد. پیش‌فرض، تنظیمات مدخل رجیستری مقصد در registry.conf است..PP \fB--src-registry-token\fP \fIBearer token\fP برای دسترسی به رجیستری مبدأ. .PP \fB--dest-registry-token\fP \fIBearer token\fP برای دسترسی به رجیستری مقصد. .PP \fB--retry-times\fP .PP تعداد دفعات تلاش مجدد. به‌طور پیش‌فرض، هیچ تلاشی مجددی صورت نمی‌گیرد. .PP \fB--retry-delay\fP .PP تأخیر ثابت میان تلاش‌های مجدد. در صورت عدم تنظیم (یا اگر روی 0s تنظیم شود)، زمان انتظار برای تلاش مجدد بر اساس تعداد دفعات تلاش ناموفق به‌صورت نمایی افزایش می‌یابد. .PP \fB--keep-going\fP در صورت بروز هرگونه خطا هنگام کپی کردن ایمیج‌ها، آن خطاها ثبت شده و فرایند همگام‌سازی سایر ایمیج‌ها ادامه می‌یابد و در پایان با وضعیت شکست خاتمه می‌یابد. .PP \fB--src-username\fP .PP نام کاربری برای دسترسی به رجیستری مبدأ. .PP \fB--src-password\fP .PP گذرواژه برای دسترسی به رجیستری مبدأ. .PP \fB--dest-username\fP .PP نام کاربری برای دسترسی به رجیستری مقصد. .PP \fB--dest-password\fP .PP گذرواژه برای دسترسی به رجیستری مقصد. .SH "مثال‌ها (EXAMPLES)" .SS "همگام‌سازی با یک دایرکتوری محلی" .EX $ skopeo sync --src docker --dest dir registry.example.com/busybox /media/usb .EE .PP ایمیج‌ها در این مسیر قرار می‌گیرند: .EX /media/usb/busybox:1-glibc /media/usb/busybox:1-musl /media/usb/busybox:1-ubuntu \&... /media/usb/busybox:latest .EE .SS "همگام‌سازی با یک رجیستری کانتینر از دایرکتوری محلی" ایمیج‌ها در این مسیر قرار دارند: .EX /media/usb/busybox:1-glibc .EE .PP اجرای همگام‌سازی: .EX $ skopeo sync --src dir --dest docker /media/usb/busybox:1-glibc my-registry.local.lan/test/ .EE .PP محتوای رجیستری مقصد: .EX REPO TAGS my-registry.local.lan/test/busybox 1-glibc .EE.SS همگام‌سازی با یک دایرکتوری محلی، دامنه‌بندی‌شده (scoped) .EX $ skopeo sync --src docker --dest dir --scoped registry.example.com/busybox /media/usb .EE .PP تصاویر در این مسیر قرار می‌گیرند: .EX /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 .EE .SS همگام‌سازی با یک رجیستری کانتینر .EX $ skopeo sync --src docker --dest docker registry.example.com/busybox my-registry.local.lan .EE .PP محتوای رجیستری مقصد: .EX REPO TAGS registry.local.lan/busybox 1-glibc, 1-musl, 1-ubuntu, ..., latest .EE .SS همگام‌سازی با یک رجیستری کانتینر با حفظ مخزن .EX $ skopeo sync --src docker --dest docker registry.example.com/repo/busybox my-registry.local.lan/repo .EE .PP محتوای رجیستری مقصد: .EX REPO TAGS registry.local.lan/repo/busybox 1-glibc, 1-musl, 1-ubuntu, ..., latest .EE .SS همگام‌سازی با یک رجیستری کانتینر با پسوند برچسب .EX $ skopeo sync --src docker --dest docker --append-suffix '-mirror' registry.example.com/busybox my-registry.local.lan .EE .PP محتوای رجیستری مقصد: .EX REPO TAGS registry.local.lan/busybox 1-glibc-mirror, 1-musl-mirror, 1-ubuntu-mirror, ..., latest-mirror .EE .SS محتوای فایل YAML (به عنوان \fIsource\fP برای \fB**--src yaml**\fR استفاده می‌شود) .EX 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 .EE .PP اگر نام فایل yaml برابر با \fBsync.yml\fR باشد، اجرای همگام‌سازی بدین صورت است: .EX $ skopeo sync --src yaml --dest docker sync.yml my-registry.local.lan/repo/ .EE .PP این دستور تصاویر زیر را کپی خواهد کرد: \- مخزن \fBregistry.example.com/busybox\fR: تمام تصاویر، زیرا برچسبی مشخص نشده است. \- مخزن \fBregistry.example.com/redis\fR: تصاویر دارای برچسب‌های "1.0" و "2.0" به همراه تصویری با دایجست "sha256:0000000000000000000000000000000011111111111111111111111111111111". \- مخزن \fBregistry.example.com/nginx\fR: تصاویر دارای برچسب‌های "1.13.1-alpine-perl" و "1.13.2-alpine-perl". \- مخزن \fBquay.io/coreos/etcd\fR: تصاویر دارای برچسب "latest". \- مخزن \fBregistry.example.com/alpine\fR: تمام تصاویر با برچسب‌هایی که با شرط نگارش معنایی (semantic version) ">= 3.12.0" مطابقت دارند ("3.12.0"، "3.12.1"، ...، "4.0.0"، ...). .PP فهرست کامل مقایسه‌های ممکن برای نگارش معنایی را می‌توان در مستندات کتابخانه بالادستی یافت: https://github.com/Masterminds/semver/tree/v3.2.0#basic-comparisons .PP ترتیب‌بندی و اولویت نگارش‌ها همان‌گونه که در اینجا تعریف شده، در نظر گرفته می‌شود: https://semver.org/#spec-item-11 .PP برای رجیستری \fBregistry.example.com\fR، از اعتبارنامه‌های "john"/"this is a secret" استفاده می‌شود و گواهی‌های TLS سرور در \fB/home/john/certs\fR\& قرار دارند. .PP اعتبارسنجی TLS به طور معمول فعال است و می‌توان با تنظیم \fBtls-verify\fR روی \fBfalse\fR\& آن را غیرفعال کرد. در مثال بالا، اعتبارسنجی TLS برای \fBregistry.example.com\fR فعال بوده، در حالی که برای \fBquay.io\fR\& غیرفعال شده است..SH "همچنین ببینید (SEE ALSO)" skopeo(1), skopeo-login(1), docker-login(1), containers-auth.json(5), containers-policy.json(5), containers-transports(5) .SH "نویسندگان (AUTHORS)" Flavio Castelli fcastelli@suse.com \[la]mailto:fcastelli@suse.com\[ra], Marco Vedovati mvedovati@suse.com \[la]mailto:mvedovati@suse.com\[ra]