.nh .TH "DOCKER" "1" "Aug 2026" "Docker Community" "Docker User Manuals" .SH "نام (NAME)" docker-container-cp \- رونوشت فایل‌ها/پوشه‌ها میان کانتینر و فایل‌سیستم محلی .SH "خلاصه دستور (SYNOPSIS)" \fBdocker container cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|- docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH\fP .SH "شرح (DESCRIPTION)" ابزار \fBdocker container cp\fR محتویات \fBSRC_PATH\fR را به \fBDEST_PATH\fR کپی می‌کند. شما می‌توانید از فایل‌سیستم کانتینر به ماشین محلی یا برعکس، از فایل‌سیستم محلی به کانتینر کپی کنید. اگر برای \fBSRC_PATH\fR یا \fBDEST_PATH\fR مقدار \fB-\fR مشخص شود، می‌توانید یک آرشیو tar را از \fBSTDIN\fR دریافت کرده یا به \fBSTDOUT\fR ارسال کنید. کانتینر \fBCONTAINER\fR می‌تواند در حال اجرا یا متوقف باشد. مقدار \fBSRC_PATH\fR یا \fBDEST_PATH\fR می‌تواند یک فایل یا دایرکتوری باشد. .PP دستور \fBdocker container cp\fR فرض می‌کند مسیرهای کانتینر نسبت به دایرکتوری ریشه (\fB/\fR) کانتینر هستند. این یعنی ذکر اسلش ابتدایی اختیاری است؛ دستور، دو مسیر \fBcompassionate_darwin:/tmp/foo/myfile.txt\fR و \fBcompassionate_darwin:tmp/foo/myfile.txt\fR را یکسان می‌داند. مسیرهای ماشین محلی می‌توانند مقداری مطلق یا نسبی باشند. این دستور مسیرهای نسبی ماشین محلی را نسبت به دایرکتوری کاری فعلی که \fBdocker container cp\fR در آن اجرا می‌شود تفسیر می‌کند. .PP دستور \fBcp\fR مشابه با دستور یونیکس \fBcp -a\fR عمل می‌کند؛ به این صورت که دایرکتوری‌ها به‌صورت بازگشتی و در صورت امکان با حفظ دسترسی‌ها کپی می‌شوند. مالکیت روی کاربر و گروه اصلی در مقصد تنظیم می‌شود. برای نمونه، فایل‌هایی که در یک کانتینر کپی می‌شوند با شناسه کاربری و گروهی (\fBUID:GID\fR) کاربر root ایجاد می‌شوند. فایل‌هایی که در ماشین محلی کپی می‌شوند با شناسه کاربری و گروهی (\fBUID:GID\fR) کاربری که دستور \fBdocker container cp\fR را اجرا کرده ایجاد می‌گردند. اگر گزینه \fB-L\fR را مشخص کنید، دستور \fBdocker container cp\fR پیوندهای نمادین موجود در \fBSRC_PATH\fR را دنبال می‌کند. دستور \fBdocker container cp\fR در صورت عدم وجود دایرکتوری‌های والد \fBDEST_PATH\fR، آن‌ها را ایجاد \fIنمی‌کند\fP. .PP با فرض جداکننده مسیر \fB/\fR، آرگومان اول \fBSRC_PATH\fR و آرگومان دوم \fBDEST_PATH\fR، رفتار دستور به شرح زیر است: .IP \(bu 2 مقدار \fBSRC_PATH\fR یک فایل را مشخص می‌کند .RS .IP \(bu 2 مقدار \fBDEST_PATH\fR وجود ندارد .RS .IP \(bu 2 فایل در قالب یک فایل جدید در \fBDEST_PATH\fR ذخیره می‌شود .RE .IP \(bu 2 مقدار \fBDEST_PATH\fR وجود ندارد و به \fB/\fR ختم می‌شود .RS .IP \(bu 2 شرایط خطا: دایرکتوری مقصد باید وجود داشته باشد. .RE .IP \(bu 2 مقدار \fBDEST_PATH\fR وجود دارد و یک فایل است .RS .IP \(bu 2 مقصد با محتویات فایل مبدأ رونویسی (overwrite) می‌شود .RE .IP \(bu 2 مقدار \fBDEST_PATH\fR وجود دارد و یک دایرکتوری است .RS .IP \(bu 2 فایل با استفاده از نام پایه (basename) برگرفته از \fBSRC_PATH\fR درون این دایرکتوری کپی می‌شود .RE .RE .IP \(bu 2 مقدار \fBSRC_PATH\fR یک دایرکتوری را مشخص می‌کند .RS .IP \(bu 2 مقدار \fBDEST_PATH\fR وجود ندارد .RS .IP \(bu 2 مسیر \fBDEST_PATH\fR به عنوان یک دایرکتوری ایجاد شده و \fIمحتویات\fP دایرکتوری مبدأ درون این دایرکتوری کپی می‌شود .RE .IP \(bu 2 مقدار \fBDEST_PATH\fR وجود دارد و یک فایل است .RS .IP \(bu 2 شرایط خطا: نمی‌توان یک دایرکتوری را در یک فایل کپی کرد .RE .IP \(bu 2 مقدار \fBDEST_PATH\fR وجود دارد و یک دایرکتوری است .RS .IP \(bu 2 مسیر \fBSRC_PATH\fR به \fB/.\fR ختم نمی‌شود (یعنی: \fIاسلش\fP به همراه \fIنقطه\fP) .RS .IP \(bu 2 دایرکتوری مبدأ به درون این دایرکتوری کپی می‌شود .RE .IP \(bu 2 مسیر \fBSRC_PATH\fR به \fB/.\fR ختم می‌شود (یعنی: \fIاسلش\fP به همراه \fIنقطه\fP) .RS .IP \(bu 2 \fIمحتویات\fP دایرکتوری مبدأ درون این دایرکتوری کپی می‌شود .RE .RE .RE .PP این دستور نیازمند آن است که \fBSRC_PATH\fR و \fBDEST_PATH\fR طبق قوانین بالا وجود داشته باشند. اگر \fBSRC_PATH\fR محلی باشد و یک پیوند نمادین باشد، به صورت پیش‌فرض خود پیوند نمادین کپی می‌شود و نه مقصد آن. برای کپی کردن مقصد پیوند و نه خود پیوند، گزینه \fB-L\fR را مشخص کنید. .PP یک دونقطه (\fB:\fR) به عنوان جداکننده میان \fBCONTAINER\fR و مسیر آن استفاده می‌شود. شما همچنین می‌توانید از \fB:\fR هنگام تعیین مسیرهای \fBSRC_PATH\fR یا \fBDEST_PATH\fR در یک ماشین محلی استفاده کنید، برای مثال \fBfile:name.txt\fR\&. اگر در مسیر ماشین محلی از \fB:\fR استفاده می‌کنید، باید مسیر را به صورت صریح با یک مسیر نسبی یا مطلق مشخص نمایید، مانند: .EX `/path/to/file:name.txt` or `./file:name.txt` .EE .PP امکان کپی کردن برخی فایل‌های سیستمی خاص نظیر منابع موجود در \fB/proc\fR، \fB/sys\fR، \fB/dev\fR، tmpfs، و مانت‌های ایجادشده توسط کاربر در کانتینر وجود ندارد. با این حال، شما همچنان می‌توانید چنین فایل‌هایی را با اجرای دستی \fBtar\fR در \fBdocker exec\fR کپی کنید. برای نمونه (فرض کنید \fBSRC_PATH\fR و \fBDEST_PATH\fR دایرکتوری هستند): .EX $ docker exec foo tar Ccf $(dirname SRC_PATH) - $(basename SRC_PATH) | tar Cxf DEST_PATH - .EE .PP یا .EX $ tar Ccf $(dirname SRC_PATH) - $(basename SRC_PATH) | docker exec -i foo tar Cxf DEST_PATH - .EE .PP استفاده از \fB-\fR به عنوان \fBSRC_PATH\fR محتویات \fBSTDIN\fR را به صورت یک آرشیو tar جریان می‌دهد (stream). این دستور محتوای tar را در \fBDEST_PATH\fR درون فایل‌سیستم کانتینر استخراج می‌کند. در این حالت، \fBDEST_PATH\fR باید یک دایرکتوری را مشخص کند. استفاده از \fB-\fR به عنوان \fBDEST_PATH\fR محتویات منبع را به صورت یک آرشیو tar به \fBSTDOUT\fR می‌فرستد. .SH "مثال‌ها (EXAMPLES)" فرض کنید کانتینری تولید خروجی خود را به عنوان فایلی در جایی از فایل‌سیستمش به پایان رسانده است. این می‌تواند خروجی یک فرایند ساخت (build job) یا محاسبات دیگری باشد. شما می‌توانید این خروجی‌ها را از کانتینر به مکانی روی میزبان محلی خود کپی کنید. .PP اگر می‌خواهید دایرکتوری \fB/tmp/foo\fR را از یک کانتینر در دایرکتوری موجود \fB/tmp\fR روی میزبان خود کپی کنید، در صورتی که \fBdocker container cp\fR را در دایرکتوری خانگی (\fB~\fR) خود روی میزبان محلی اجرا کنید: .EX $ docker container cp compassionate_darwin:tmp/foo /tmp .EE .PP داکر یک دایرکتوری به نام \fB/tmp/foo\fR روی میزبان شما ایجاد می‌کند. از طرف دیگر، می‌توانید اسلش ابتدایی را در دستور حذف کنید. اگر این دستور را از دایرکتوری خانگی خود اجرا کنید: .EX $ docker container cp compassionate_darwin:tmp/foo tmp .EE .PP اگر \fB~/tmp\fR وجود نداشته باشد، داکر آن را ایجاد کرده و محتویات \fB/tmp/foo\fR را از کانتینر درون این دایرکتوری جدید کپی می‌کند. اگر \fB~/tmp\fR از قبل به صورت یک دایرکتوری وجود داشته باشد، داکر محتویات \fB/tmp/foo\fR را از کانتینر درون دایرکتوری \fB~/tmp/foo\fR کپی خواهد کرد. .PP هنگام کپی کردن یک فایل تکی به یک \fBLOCALPATH\fR موجود، دستور \fBdocker container cp\fR در صورتی که \fBLOCALPATH\fR یک فایل باشد محتویات آن را بازنویسی می‌کند و اگر یک دایرکتوری باشد فایل را در \fBLOCALPATH\fR قرار می‌دهد؛ و چنانچه فایلی با همان نام از قبل موجود باشد آن را بازنویسی می‌نماید. برای مثال در این دستور: .EX $ docker container cp sharp_ptolemy:/tmp/foo/myfile.txt /test .EE .PP اگر \fB/test\fR روی ماشین محلی وجود نداشته باشد، به عنوان فایلی با محتویات \fB/tmp/foo/myfile.txt\fR کانتینر ایجاد خواهد شد. اگر \fB/test\fR به صورت یک فایل وجود داشته باشد، بازنویسی می‌شود. در نهایت، اگر \fB/test\fR یک دایرکتوری باشد، فایل در مسیر \fB/test/myfile.txt\fR کپی خواهد شد. .PP در ادامه، فرض کنید می‌خواهید یک فایل یا پوشه را درون یک کانتینر کپی کنید. برای نمونه، این می‌تواند یک فایل پیکربندی یا ورودی دیگری برای یک محاسبه طولانی‌مدت باشد که می‌خواهید پیش از شروع کانتینر ایجادشده، در آن قرار دهید. این قابلیت سودمند است چرا که نیازی ندارد فایل پیکربندی یا سایر ورودی‌ها در ایمیج کانتینر وجود داشته باشند. .PP اگر فایلی به نام \fBconfig.yml\fR در دایرکتوری جاری میزبان محلی خود دارید و می‌خواهید آن را در دایرکتوری موجود \fB/etc/my-app.d\fR درون یک کانتینر کپی کنید، می‌توان از این دستور استفاده کرد: .EX $ docker container cp config.yml myappcontainer:/etc/my-app.d .EE .PP اگر چندین فایل در دایرکتوری محلی \fB/config\fR دارید که می‌خواهید آن‌ها را در دایرکتوری \fB/etc/my-app.d\fR درون یک کانتینر کپی کنید: .EX $ docker container cp /config/. myappcontainer:/etc/my-app.d .EE .PP دستور بالا محتویات دایرکتوری محلی \fB/config\fR را درون دایرکتوری \fB/etc/my-app.d\fR کانتینر کپی می‌کند. .PP در نهایت، اگر می‌خواهید یک پیوند نمادین را درون کانتینر کپی کنید، معمولاً مایل هستید مقصد پیوند را کپی کنید نه خود پیوند را. برای کپی کردن مقصد، از گزینه \fB-L\fR استفاده کنید، به عنوان مثال: .EX $ ln -s /tmp/somefile /tmp/somefile.ln $ docker container cp -L /tmp/somefile.ln myappcontainer:/tmp/ .EE .PP این دستور محتوای فایل محلی \fB/tmp/somefile\fR را درون فایل \fB/tmp/somefile.ln\fR در کانتینر کپی می‌کند. بدون گزینه \fB-L\fR، فایل \fB/tmp/somefile.ln\fR ساختار پیوند نمادین خود را حفظ می‌کند اما محتوای آن کپی نمی‌شود. .SH "گزینه‌ها (OPTIONS)" \fB-a\fP, \fB--archive\fP[=false] حالت آرشیو (کپی تمام اطلاعات uid/gid) .PP \fB-L\fP, \fB--follow-link\fP[=false] همیشه پیوندهای نمادین در SRC_PATH دنبال شوند .PP \fB-q\fP, \fB--quiet\fP[=false] سرکوب نمایش پیشرفت در حین کپی. در صورت عدم اتصال ترمینال، نمایش پیشرفت به طور خودکار متوقف می‌شود .SH "ببینید (SEE ALSO)" \fBdocker-container(1)\fP