توضیح دستورات داکر – این قسمت docker build, commit, cp

دستور docker build:

با استفاده از این دستور می‌توان از روی داکرفایل ایمیج داکر ایجاد کرد. این دستور آپشن‌های زیادی دارد که در تصویر زیر لیست آنها را می‌توانید مشاهده کنید.

docker build --help
docker build --help

توضیح مختصری درباره‌ی فرآیند build:

فرآیند build به این صورت است که از روی یک ایمیج Base مابقی تغییرات در آن داده می‌شود تا ایمیج مد نظر شما ایجاد شود. نکته این که در این مسیر ممکن چندین ایمیج ایجاد شود تا به ایمیج نهایی برسیم. این قابلیت لایه‌ای بودن بسیار به کم‌ حجم شدن ایمیج نهایی می‌تواند کمک کند. ممکن است در لایه‌ی آخر ایمیج شما مشکلی رخ دهد که مجبور باشید بعد از اصلاح آن از ابتدا فرآیند build را انجام دهید. قابلیت کش که از همین روش لایه‌ای بودن ایمیج‌ها فراهم شده است به شما کمک می‌کند که تمام لایه‌های درست و صحیح را مجدد دریافت نکنید و تنها از همان لایه‌ای که خطا داشته است ادامه دهید.

به صورت کلی این دستور به این صورت استفاده می‌شود، در جایی که داکرفایل وجود دارد اجرا شده تا از روی اون ایمیج مورد نظر شما را ایجاد کند البته نام ایمیج را به صورت رندم انتخاب می‌کند. این روش ساده‌ترین راه استفاده از این دستور می‌باشد. حالا با کمک آپشن‌های این دستور می‌توان به حالات مختلف از این دستور استفاده کرد. در ضمن لزومی ندارد حتما داکرفایل در پوشه‌ی جاری که دستور اجرا می‌شود باشد می‌تواند آن را از مسیر مشخص دیگری دریافت کرد. با توجه به اهمیت و میزان ‌استفاده، برخی از آپشن‌ها توضیح داده می‌شود و مابقی آپشن‌ها حسب نیاز سناریو‌هایی که بعدا پیاده‌سازی می‌شود بررسی و توضیح داده خواهد شد.

آپشن t-: با استفاده از آن می‌توانید به ایمیجی که ایجاد می‌شود اسم و تگ بدهید.

آپشن f-: اگر داکر فایل شما در مسیر دیگه‌ای قرار دارد با استفاده از این آپشن می‌توانید مسیردهی کنید تا به اون داکرفایل برسید. به صورت پیش‌فرض و بدون استفاده از این آپشن باید حتما در مسیر داکرفایل باشید.

آپشن force-rm: کانتینر‌‌های میانی که ایجاد می‌شود در لایه‌های مختلف تا ایمیج نهایی ایجاد شود را پاک می‌کند. اگر از این آپشن استفاده کنید کانتینر‌های میانی را پاک می‌کند در این صورت اگر مشکلی در لایه‌ای ایجاد شود باید از ابتدا تمام لایه‌ها را ایجاد کرد.

آپشن rm: بعد از نهایی شدن و ایجاد کامل ایمیج، کانتینرهایی که برای لایه‌های مختلف ایجاد کرده است را پاک می‌کند. این آپشن به صورت پیش‌فرض فعال می‌باشد. تفاوت این آپشن با آپشن force-rm در این است که در این آپشن باید حتما ایمیج با موفقیت ایجاد شود تا تمام کانتینرها را پاک کند.

آپشن pull: همواره آخرین نسخه‌ی ایمیج بیس را دریافت کرده و بعد فرآیند build را انجام خواهد داد.

آپشن disable-content-trust: بررسی‌های مربوط به چک کردن ایمیج را انجام نمی‌دهد.

آپشن no-cache: از کش استفاده نمی‌کند و ایمیج را از ابتدا به صورت کامل build می‌کند. معمولا یکی از بهترین قابلیت‌های داکر استفاده از کش و لایه‌ای بودن ایمیج‌ها می‌باشد. اگر این آپشن را فعال کنید هیچ‌گاه در هنگام build از کش استفاده نکرده و همواره سعی بر آن دارد که خودش ایمیج را از ابتدا ایجاد کند.

آپشن quiet: خروجی هنگام build را به شما نمایش نمی‌دهد و تنها id ایمیح‌هایی که ایجاد شده است را نمایش می‌دهد. توصیه‌ می‌شود از این آپشن استفاده نکنید زیرا این اطلاعات به شما کمک می‌کند.

آپشن security-opt: با استفاده از این دستور می‌توانید آپشن‌های امنیتی در هنگام build خود اضافه کنید.

منبع

دستور docker commit:

با استفاده از این دستور از کانتینر در حال کار می‌توانیم یک ایمیج ایجاد کنیم. این موضوع زمانی کاربرد دارد که تغییراتی در کانتینر ایجاد شده و نیاز است تا این تغییرات در ایمیج جدیدی ثبت شود.

docker commit --help
docker commit --help

آپشن a-: با استفاده از این آپشن در هنگام commit می‌توانید به ایمیج یک نام نویسنده جدید اضافه کنید. این موضوع مرسوم است که در هر ایمیج نام فردی که داکرفایل را ایجاد کرده و ایمیج را آماده کرده است قرار داده می‌شود.

آپشن c-: می‌توانید در هنگام commit ایمیج، برخی از دستورات داکرفایل را در آن اضافه کنید. در مثال نمونه‌های استفاده از این آپشن آورده شده است. لیست مواردی که می‌توان از آنها استفاده کرد در ادامه فهرست شده است.

CMD | ENTRYPOINT | ENV | EXPOSE | LABEL | ONBUILD | USER | VOLUME | WORKDIR

آپشن m-: در هنگام commit ایمیج پیغامی نوشته شود که این پیغام می‌تواند توضیح این باشد که چرا این ایمیج ایجاد شده است و اینکه چه تغییراتی در آن انجام شده است.

آپشن p-: این آپشن که به صورت پیش‌فرض فعال می‌باشد در هنگام commit ایمیج آن را pause می‌کند که دیگر هیچ تغییری در هنگام commit انجام نشود.

به مثال‌های زیر توجه کنید.

$ docker commit c3f279d17e0a  docker.dockerme.ir/testimage:version3 
f5283438590d
$ docker images 
REPOSITORY                                   TAG                   ID                       CREATED             SIZE docker.dockerme.ir/testimage   version3      f5283438590d        16 seconds ago      335.7 MB

$ docker commit --change='CMD ["apachectl", "-DFOREGROUND"]' -c "EXPOSE 80" c3f279d17e0a  docker.dockerme.ir/testimage:version4 
f5283438590d

منبع

دستور docker cp:

با استفاده از این دستور می‌توان فایل یا دایرکتوری رو بین کانتینر و هاست جابه‌جا کرد. هم می‌توان از هاست به کانتینر و هم از کانتینر به هاست منتقل کرد.

docker cp --help
docker cp --help

همان‌طور که در ادامه مشاهده می‌کنید می‌توانید فایل و فولدر را از کانتینر به هاست و یا اینکه از هاست به کانتینر منتقل کنید.

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

آپشن a-: با استفاده از این آپشن اطلاعات تمام موارد مربوط به فایل یا فولدر همانند uid/gid را نیز کامل منتقل می‌کند.

آپشن L-: با استفاده از این آپشن لینک‌های نرم‌افزاری () که در فایل‌ها و فولدرها هست را دنبال می‌کند و فایلی که منتقل می‌کند دارای داده‌های درست می‌باشد و به لینک قبلی خود وابسته نیست.


آموزش داکر و پلتفرم
آموزش داکر و پلتفرم
https://dockerme.ir/