-V ی ا-Volume: از سه زمینه تشکیل شده است که توسط شخصیت های روده بزرگ از هم جدا شده است (::. زمینه ها باید به ترتیب صحیح باشند و معنای هر زمینه بلافاصله آشکار نیست. - در مورد جلد های نامگذاری شده ، قسمت اول نام حجم است و در یک دستگاه میزبان معین بی نظیر است. برای حجم ناشناس ، قسمت اول حذف شده است.
- قسمت دوم مسیری است که پرونده یا دایرکتوری در ظرف نصب شده است.
- قسمت سوم اختیاری است و لیستی از گزینه های جدا از کاما مانند RO است. این گزینه ها در زیر بحث شده است.
- نوع کوه ، که می تواند اتصال ، حجم یا TMPF باشد. این موضوع در مورد حجم بحث می کند ، بنابراین نوع همیشه حجم است.
- منبع کوه. برای جلد های نامگذاری شده ، این نام جلد است. برای حجم ناشناس ، این زمینه حذف شده است. ممکن است به عنوان منبع یا SRC مشخص شود.
- مقصد به عنوان مقدار آن مسیری را که پرونده یا فهرست در ظرف نصب شده است ، می گیرد. ممکن است به عنوان مقصد ، DST یا هدف مشخص شود.
- گزینه Readonly ، در صورت وجود ، باعث می شود که اتصال اتصال به صورت فقط خواندنی در ظرف نصب شود. ممکن است به عنوان Readonly یا Ro مشخص شود.
- گزینه Volume-OPT ، که می تواند بیش از یک بار مشخص شود ، یک جفت ارزش کلیدی متشکل از نام گزینه و مقدار آن را می گیرد.
مقادیر فرار از تجزیه کننده بیرونی CSV
اگر درایور حجم شما لیست جدا شده از کاما را به عنوان گزینه ای می پذیرد ، باید از مقدار CSV بیرونی از ارزش آن فرار کنید. برای فرار از حجم ، آن را با نقل قول های مضاعف (") احاطه کرده و کل پارامتر کوه را با نقل قول های منفرد (') احاطه کنید.
به عنوان مثال ، درایور محلی گزینه های کوه را به عنوان یک لیست جدا از کاما در پارامتر O می پذیرد. این مثال روش صحیح برای فرار از لیست را نشان می دهد.
$ service service docker ایجاد --mount 'type = حجم ، src = ، dst = ، volume-driver = محلی ، volume-opt = type = nfs ، volume-opt = دستگاه =: ، "volume-opt = o = addr =، vers = 4 ، نرم ، timeo = 180 ، bg ، tcp ، rw "' -name myservice
مثالهای زیر هر دو نحو - -Mount و-V را در صورت امکان نشان می دهد ، و در ابتد ا-مونتاژ ارائه می شود.
تفاوت بین رفتا ر-v و-سوار
برخلاف مونت های اتصال ، تمام گزینه های حجم برای پرچم ها ی-Mount و-V در دسترس است.
هنگام استفاده از حجم با خدمات ، فق ط-مونتاژ پشتیبانی می شود.
حجم ها را ایجاد و مدیریت کنید
بر خلاف یک اتصال اتصال ، می توانید حجم های خارج از محدوده هر ظرف را ایجاد و مدیریت کنید.
یک جلد ایجاد کنید:
$حجم Docker ایجاد VOL MY-VOL
لیست لیست ها:
$حجم داکرls من-برگه محلی
یک جلد را بازرسی کنید:
$حجم داکر بازرسی از VOL[ <"Driver": "local", "Labels": <>، "MountPoint": "/var/lib/docker/volumes/my-vol/_data" ، "name": "my-vol" ، "گزینه ها":<>, "Scope": "local"> ]
یک جلد را حذف کنید:
$حجم داکرrmمن
یک ظرف را با یک حجم شروع کنید
اگر یک ظروف را با حجم که هنوز وجود ندارد ، شروع می کنید ، Docker حجم را برای شما ایجاد می کند. مثال زیر حجم myVol2 را در / app / در ظرف نصب می کند.
نمونه ها ی-V و-MOUNT در زیر نتیجه مشابهی را تولید می کنند. شما نمی توانید آنها را اجرا کنید ، مگر اینکه بعد از اجرای اولین مورد ، ظرف Devtest و حجم MyVol2 را حذف کنید.
$داکر دویدن-d --نامکمبود --کوه منبع=myvol2 ، هدف=/برنامهnginx: آخرین
$داکر دویدن-d --نامکمبود -vmyvol2:/برنامهnginx: آخرین
از Docker بازرسی از DevTest استفاده کنید تا تأیید کنید که این حجم به درستی ایجاد شده و نصب شده است. به دنبال بخش Mounts باشید:
"مونت": [ "نوع": "جلد", "نام": "myvol2", "منبع": "/var/lib/docker/volumes/myvol2/_data", "مقصد": "/برنامه", "راننده": "محلی", "حالت": "", "RW": درست است، واقعی, "انتشار": "" > ],
این نشان می دهد که کوه یک حجم است ، منبع و مقصد صحیح را نشان می دهد ، و این که کوه دارای نوشتن است.
ظرف را متوقف کرده و حجم را بردارید. توجه داشته باشید حذف حجم یک مرحله جداگانه است.
$Docker Container Stop Devtest$ظرف داکرrmکمبود$حجم داکرrmmyvol2
از یک جلد با آهنگسازی Docker استفاده کنید
در اینجا نمونه ای از یک سرویس آهنگسازی Docker با یک جلد آورده شده است:
خدمات: جبهه: تصویر: گره: LTS حجم: - MyApp:/صفحه اصلی/گره/برنامه حجم: ماپه:
آهنگسازی Docker برای اولین بار یک جلد ایجاد می کند. هنگامی که متعاقباً دستور را اجرا می کنید ، از همان حجم استفاده می شود.
شما می توانید یک حجم مستقیماً در خارج از آهنگسازی با استفاده از حجم docker ایجاد کنید و سپس آن را در داخل docker-compose. yml به شرح زیر ارجاع دهید:
خدمات: جبهه: تصویر: گره: LTS حجم: - MyApp:/صفحه اصلی/گره/برنامه حجم: ماپه: خارجی: درست است، واقعی
برای کسب اطلاعات بیشتر در مورد استفاده از حجم با آهنگسازی ، در مشخصات آهنگسازی به بخش حجم مراجعه کنید.
یک سرویس با حجم شروع کنید
هنگامی که یک سرویس را شروع می کنید و یک جلد را تعریف می کنید ، هر ظرف سرویس از حجم محلی خود استفاده می کند. در صورت استفاده از درایور حجم محلی ، هیچ یک از ظروف نمی توانند این داده ها را به اشتراک بگذارند. با این حال ، برخی از درایورهای حجم از ذخیره مشترک پشتیبانی می کنند.
مثال زیر یک سرویس NGINX با چهار ماکت شروع می شود که هر یک از آنها از یک حجم محلی به نام MyVol2 استفاده می کند.
$سرویس Docker ایجاد کنید-d -تکرار=4 --نامکم تحرک --کوه منبع=myvol2 ، هدف=/برنامهnginx: آخرین
برای تأیید اینکه سرویس در حال اجرا است ، از Docker Service PS DevTest-Service استفاده کنید:
$Docker Service PS Devtest-Serviceنام ID نام تصویر گره مورد نظر پورت های خطای حالت جریان فعلی 4D7oz1J85WWN Devtest-Service. 1 nginx: آخرین MOBY که 14 ثانیه پیش اجرا می شود
برای متوقف کردن کارهای در حال اجرا می توانید سرویس را حذف کنید:
$سرویس داکرrmکم تحرک
حذف سرویس هیچ حجم ایجاد شده توسط سرویس را حذف نمی کند. حذف حجم یک مرحله جداگانه است.
تفاوت های نحوی برای خدمات
فرمان ایجاد Docker Creation از پرچ م-v یا volume پشتیبانی نمی کند. هنگام نصب حجم در ظروف سرویس ، باید از پرچ م-کوه استفاده کنید.
یک حجم را با استفاده از یک ظرف جمع کنید
اگر ظرفی را شروع می کنید که حجم جدیدی ایجاد می کند ، و کانتینر دارای پرونده یا دایرکتوری در دایرکتوری است که مانند / app / ، محتوای دایرکتوری در حجم کپی می شوند. سپس این ظرف از حجم نصب و استفاده می کند و سایر ظروف که از این حجم استفاده می کنند نیز به محتوای از پیش جمع شده دسترسی دارند.
برای نشان دادن این موضوع ، مثال زیر یک کانتینر nginx را شروع می کند و حجم جدید nginx-vol را با محتویات فهرست کانتینر/usr/share/nginx/html جمع می کند. اینجاست که NGINX محتوای پیش فرض HTML خود را ذخیره می کند.
نمونه های - -MOUNT و-V نتیجه نهایی یکسان دارند.
$داکر دویدن-d --نام=برجسته ترین --کوه منبع=nginx-vol ، مقصد=/usr/share/nginx/htmlnginx: آخرین
$داکر دویدن-d --نام=برجسته ترین -vnginx-vol:/usr/share/nginx/htmlnginx: آخرین
پس از اجرای هر یک از این مثالها ، دستورات زیر را برای تمیز کردن ظروف و حجم ها اجرا کنید. توجه داشته باشید حذف حجم یک مرحله جداگانه است.
$Docker Container Stop nginxtest$ظرف داکرrmبرجسته ترین$حجم داکرrmدارای نشست
از یک جلد فقط خواندنی استفاده کنید
برای برخی از کاربردهای توسعه ، ظرف باید در اتصال اتصال به آن بنویسد تا تغییرات به میزبان Docker پخش شود. در مواقع دیگر ، ظرف فقط نیاز به دسترسی به داده ها دارد. چندین ظروف می توانند همان حجم را سوار کنند. شما می توانید به طور همزمان یک حجم واحد را به عنوان خواندن برای برخی از ظروف و به عنوان خواندنی برای برخی دیگر نصب کنید.
مثال زیر یکی از موارد فوق را اصلاح می کند اما با اضافه کردن RO به لیست گزینه های (خالی به طور پیش فرض) ، پس از نقطه نصب در ظرف ، فهرست را به عنوان یک جلد فقط خواندنی نصب می کند. جایی که چندین گزینه وجود دارد ، می توانید آنها را با استفاده از کاما جدا کنید.
نمونه های - -MOUNT و-V نتیجه یکسان دارند.
$داکر دویدن-d --نام=برجسته ترین --کوه منبع=nginx-vol ، مقصد=/usr/share/nginx/html ، readonlynginx: آخرین
$داکر دویدن-d --نام=برجسته ترین -vnginx-vol:/usr/share/nginx/html: ronginx: آخرین
برای تأیید اینکه کوه فقط خواندنی به درستی ایجاد شده است ، از docker بازرسی nginxtest استفاده کنید. به دنبال بخش Mounts باشید:
"مونت": [ "نوع": "جلد", "نام": "nginx-vol", "منبع": "/var/lib/docker/volumes/nginx-vol/_data", "مقصد": "/usr/share/nginx/html", "راننده": "محلی", "حالت": "", "RW": دروغ, "انتشار": "" > ],
کانتینر را متوقف کرده و برداشته و حجم را بردارید. حذف حجم یک مرحله جداگانه است.
$Docker Container Stop nginxtest$ظرف داکرrmبرجسته ترین$حجم داکرrmدارای نشست
داده ها را بین دستگاه ها به اشتراک بگذارید
هنگام ایجاد برنامه های تحمل خطا ، ممکن است لازم باشد چندین ماکت از همان سرویس را پیکربندی کنید تا به همان پرونده ها دسترسی پیدا کنید.
روش های مختلفی برای دستیابی به این هدف در هنگام توسعه برنامه های شما وجود دارد. یکی این است که منطق را به برنامه خود اضافه کنید تا پرونده ها را در سیستم ذخیره سازی شیء ابری مانند Amazon S3 ذخیره کنید. مورد دیگر ایجاد حجم با درایور است که از نوشتن پرونده ها به یک سیستم ذخیره سازی خارجی مانند NFS یا Amazon S3 پشتیبانی می کند.
درایورهای حجم به شما امکان می دهند سیستم ذخیره سازی زیرین را از منطق برنامه انتزاع کنید. به عنوان مثال ، اگر خدمات شما از یک جلد با درایور NFS استفاده می کند ، می توانید خدمات را برای استفاده از یک درایور متفاوت ، به عنوان نمونه برای ذخیره داده ها در ابر ، بدون تغییر منطق برنامه ، به روز کنید.
از درایور حجم استفاده کنید
هنگامی که یک حجم را با استفاده از Docker Volume ایجاد می کنید ، یا هنگامی که یک ظروف را شروع می کنید که از یک حجم نه در عین حال ایجاد شده استفاده می کند ، می توانید یک درایور حجم را مشخص کنید. مثالهای زیر از درایور حجم Vieux/SSHFS استفاده می کنند ، ابتدا هنگام ایجاد حجم مستقل ، و سپس هنگام شروع یک ظروف که حجم جدیدی ایجاد می کند.
تنظیم اولیه
مثال زیر فرض می کند که شما دو گره دارید که اولین آن میزبان Docker است و می توانید با استفاده از SSH به گره دوم متصل شوید.
در میزبان Docker ، افزونه Vieux/SSHFS را نصب کنید:
$افزونه داکرنصب -همه جانبهvieux/sshfs
با استفاده از درایور حجم یک حجم ایجاد کنید
این مثال یک رمز عبور SSH را مشخص می کند ، اما اگر این دو میزبان کلیدهای به اشتراک گذاشته شده اند ، می توانید رمز عبور را حذف کنید. هر درایور حجم ممکن است گزینه های صفر یا بیشتری را تنظیم کند که هر یک از آنها با استفاده از پرچ م-o مشخص شده است.
$حجم داکر ایجاد--رانندهvieux/sshfs -o SSHCMD=تست@node2:/خانه/تست -o کلمه عبور=واژگونسد
ظرفی را شروع کنید که با استفاده از یک درایور حجم یک حجم ایجاد می کند
مثال زیر رمز عبور SSH را مشخص می کند. با این حال ، اگر این دو میزبان کلیدهای به اشتراک گذاشته شده اند ، می توانید رمز عبور را حذف کنید. هر درایور حجم ممکن است گزینه های صفر یا بیشتر قابل تنظیم داشته باشد.
توجه داشته باشید:
اگر درایور حجم به شما نیاز دارد تا هر گزینه را تصویب کنید ، باید از پرچ م-سوار برای نصب حجم استفاده کنید ، و ن ه-V.
$داکر دویدن-d --نامSSHFS-Container -وولت رانندهvieux/sshfs --کوه SRC=sshvolume ، هدف=/برنامه ، Volume-OPT=SSHCMD=تست@node2:/صفحه اصلی/تست ، حجم-اپت=کلمه عبور=واژگونnginx: آخرین
خدماتی ایجاد کنید که حجم NFS ایجاد کند
مثال زیر نشان می دهد که چگونه می توانید یک حجم NFS هنگام ایجاد یک سرویس ایجاد کنید. از 10. 0. 0. 10 به عنوان سرور NFS و /var/docker-nfs به عنوان دایرکتوری صادر شده در سرور NFS استفاده می کند. توجه داشته باشید که درایور حجم مشخص شده محلی است.
NFSv3
$سرویس Docker ایجاد کنید-d --نامnfs-service --کوه 'type=volume, source=nfsvolume, target=/app, volume-driver=local, volume-opt=type=nfs, volume-opt=device=:/var/docker-nfs, volume-opt=o=addr=10. 0. 0. 10' nginx: آخرین
NFSv4
$سرویس Docker ایجاد کنید-d --نامnfs-service --کوه 'type=volume, source=nfsvolume, target=/app, volume-driver=local, volume-opt=type=nfs, volume-opt=device=:/var/docker-nfs,"volume-opt=o=addr=10. 0. 0. 10, rw, nfsvers=4, async"' nginx: آخرین
حجم های CIFS/Samba ایجاد کنید
شما می توانید یک اشتراک سامبا را مستقیماً در داکر بدون پیکربندی نقطه اتصال روی هاست خود نصب کنید.
$حجم داکر ایجاد --راننده محلی --انتخاب نوع=cifs --انتخاب دستگاه=//uxxxxx. your-server. de/backup --انتخاب o=آدرس=uxxxxx. your-server. de، نام کاربری=uxxxxxxx، رمز عبور=*****, حالت_فایل=0777، dir_mode=0777 --نامسیف-حجم
اگر به جای IP یک نام میزبان را مشخص کنید، گزینه addr لازم است. این به داکر امکان می دهد جستجوی نام میزبان را انجام دهد.
دستگاه های ذخیره سازی را مسدود کنید
می توانید یک دستگاه ذخیره سازی بلوک، مانند یک درایو خارجی یا یک پارتیشن درایو را به یک ظرف متصل کنید. مثال زیر نحوه ایجاد و استفاده از یک فایل به عنوان یک دستگاه ذخیره سازی بلوک و نحوه نصب دستگاه بلوک به عنوان یک حجم ظرف را نشان می دهد.
مهم
روش زیر تنها یک مثال است. راه حلی که در اینجا نشان داده شده است به عنوان یک عمل عمومی توصیه نمی شود. این روش را امتحان نکنید، مگر اینکه در مورد کاری که انجام می دهید بسیار مطمئن باشید.
نحوه عملکرد دستگاه های بلوک نصب
در زیر هود، پرچم --mount با استفاده از درایور ذخیره سازی محلی، syscall mount لینوکس را فراخوانی می کند و گزینه هایی را که ارسال می کنید بدون تغییر به آن ارسال می کند. Docker هیچ عملکرد اضافی را در بالای ویژگی های نصب بومی که توسط هسته لینوکس پشتیبانی می شود پیاده سازی نمی کند.
اگر با دستور mount لینوکس آشنا هستید، می توانید گزینه های --mount را به صورت زیر به دستور mount هدایت کنید:
$کوه-t -o
برای توضیح بیشتر این موضوع، مثال دستور mount زیر را در نظر بگیرید. این دستور دستگاه /dev/loop5 را در مسیر /exteal-drive روی سیستم قرار می دهد.
$کوه-text4 /dev/loop5 /exteal-drive
فرمان زیر Docker Run از نظر کاستی که در حال اجرا است ، نتیجه مشابهی به دست می آورد. اجرای یک ظرف با این گزین ه-Mount Mount را به همان روشی تنظیم می کند که گویی دستور Mount را از مثال قبلی اجرا کرده اید.
$داکر دویدن --کوه='نوع = حجم ، DST =/درایو خارجی ، حجم-درایور = محلی ، حجم-OPT = دستگاه =/dev/loop5 ، Volume-OPT = Type = EXT4'
شما نمی توانید فرمان کوه را مستقیماً داخل ظرف اجرا کنید ، زیرا ظرف قادر به دسترسی به دستگاه /dev /loop5 نیست. به همین دلیل ما به جای آن از گزین ه-Mount for The Docker Run استفاده می کنیم.
مثال: نصب دستگاه بلوک در یک ظرف
مراحل زیر یک سیستم فایل EXT4 ایجاد می کند و آن را در یک ظرف سوار می کند. پشتیبانی سیستم فایل از سیستم شما به نسخه هسته لینوکس که استفاده می کنید بستگی دارد.
- یک فایل ایجاد کنید و فضایی را به آن اختصاص دهید:
$شوخ-f1G Disk. raw
$mkfs. ext4 disk. raw
$از دست دادن-f -نمایشدیسک/dev/loop5
توجه داشته باشید LosetUp یک دستگاه حلقه زودگذر ایجاد می کند که پس از راه اندازی مجدد سیستم حذف می شود ، یا به صورت دستی با LosetU p-d حذف می شود.
$داکر دویدن-آی تی -RM --کوه='نوع = حجم ، DST =/درایو خارجی ، حجم-درایور = محلی ، حجم-OPT = دستگاه =/dev/loop5 ، Volume-OPT = Type = EXT4' اوبونتو
$از دست دادن-d/dev/loop5
پشتیبان گیری ، بازیابی یا انتقال حجم داده ها
حجم برای پشتیبان گیری ، ترمیم و مهاجرت مفید است. برای ایجاد یک ظرف جدید که آن حجم را نصب می کند ، از پرچم-ولتاژ-از پرچم استفاده کنید.
از یک جلد پشتیبان تهیه کنید
به عنوان مثال ، یک ظرف جدید به نام DBStore ایجاد کنید:
$داکر دویدن-v/dbdata--نامdbstore ubuntu /bin /bash
در دستور بعدی:
- یک ظرف جدید را راه اندازی کنید و حجم آن را از ظرف dbstore سوار کنید
- یک دایرکتوری میزبان محلی را به عنوان پشتیبان سوار کنید
- یک فرمان را منتقل کنید که محتویات حجم DBDATA را به یک پرونده backup. tar در داخل فهرست پشتیبان ما وارد کنید.
$داکر دویدن-RM -ولتاژدبستان-v $(PWD):/پشتیبان اوبونتوقیرcvf /backup/backup. tar /dbdata
هنگامی که دستور تکمیل می شود و ظرف متوقف می شود ، پشتیبان گیری از حجم DBDATA ایجاد می کند.
بازیابی حجم از پشتیبان گیری
با تهیه نسخه پشتیبان تهیه شده ، می توانید آن را به همان ظرف یا به ظرف دیگری که در جای دیگر ایجاد کرده اید بازگردانید.
به عنوان مثال ، یک ظرف جدید به نام DBStore2 ایجاد کنید:
$داکر دویدن-v/dbdata--نامdbstore2 ubuntu /bin /bash
سپس پرونده پشتیبان را در حجم داده کانتینر جدید تنظیم کنید:
$داکر دویدن-RM -ولتاژdbstore2-v $(PWD):/پشتیبان اوبونتو باش-c "CD /DBDATA && tar xvf /backup/backup. ta r-نوار 1"
می توانید از تکنیک های فوق برای خودکارسازی پشتیبان گیری ، مهاجرت و تست تست با استفاده از ابزارهای مورد نظر خود استفاده کنید.
حجم ها را حذف کنید
پس از حذف یک ظرف ، یک حجم داده Docker همچنان ادامه دارد. دو نوع جلد وجود دارد که باید در نظر بگیرید:
- به عنوان مثال ، حجم های نامگذاری شده از خارج از ظرف ، به عنوان مثال ، عالی:/نوار.
- حجم ناشناس منبع خاصی ندارد. بنابراین ، هنگامی که ظرف حذف شد ، می توانید به Daocer Daemon موتور Docker دستور دهید تا آنها را از بین ببرد.
حجم ناشناس را حذف کنید
برای حذف خودکار حجم ناشناس ، از گزین ه-RM استفاده کنید. به عنوان مثال ، این دستور یک حجم ناشناس /foo ایجاد می کند. هنگامی که ظرف را حذف می کنید ، موتور Docker حجم /FOO را از بین می برد اما حجم عالی نیست.
$داکر دویدن-RM -v/foo-vعالی:/نوار Babbox Top
توجه داشته باشید :
اگر یک ظرف دیگر حجم را با-ولتاژ از-از-ولتاژ متصل کند ، تعاریف حجم کپی می شود و حجم ناشناس نیز پس از برداشتن اولین ظرف باقی می ماند.
همه حجم ها را حذف کنید
برای از بین بردن همه حجم های بلااستفاده و فضای آزاد:
$هرس حجم داکر
مراحل بعدی
- در مورد Bind Mounts بیاموزید.
- در مورد Mounts TMPFS اطلاعات کسب کنید.
- در مورد درایورهای ذخیره سازی اطلاعات کسب کنید.
- در مورد افزونه های درایور حجم شخص ثالث بیاموزید.