آشنایی بیشتر با Docker و کامند لاین داکر قسمت دوم

نوشته شده توسط:
قسمت های دیگر این مطلب:

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

برای اجرای دستورات داکر همانطور که در پست قبل گفته شد باید از آیکون Docker Quickstart Terminal استفاده کرد. توجه کنید که با دستور docker --help می‌توانید به راهنمای دستورات داکر دسترسی پیدا کنید.

حال سوالی این جا مطرح می‌شود و آن هم این که چگونه می‌توانیم دستورات داکر را در CMD ویندوز و یا Git Bash اجرا کرد؟

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

docker-machine env default

این دستور متغیرها و آدرس‌های پیشفرض داکر را نمایش می‌دهد و در دو سطر آخر خود دستوری را معرفی می‌کند که با این دستور می‌توانیم دستورات را در ترمینال جاری اجرا کرد. مثلا اگر دستور فوق را در CMD ویندوز وارد کنیم دستور زیر برای فعال شدن داکر در CMD مورد استفاده قرار می‌گیرد:

@FOR /f "tokens=*" %i IN ('docker-machine env default') D

در Git Bash نیز دستور زیر را دریافت می‌کنیم:

eval $("C:\Program Files\Docker Toolbox\docker-machine.exe" env default)

پس در هر خط فرمان و هر سیستم عاملی برای اجرای دستورات داکر از دستور ذکر شده در بالا استفاده می‌کنیم.

دستور docker images

این دستور برای انجام عملیات روی image‌ها کاربرد دارد. برای آشنایی هرچه بیشتر از دستور docker images --help استفاده کنید.

با کد زیر تمام image‌ها حتی اگر مخفی باشند به نمایش در می‌آیند:

docker images -a

با کد زیر فقط Image Id را نمایش می‌دهیم:

docker images -q

دستور docker pull

با این دستور آخرین نسخه از Images را می‌توان دریافت کرد:

docker pull centos

دستور docker search

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

docker search Ubuntu

دستور docker run

این دستور بسیار پرکاربرد و قدرتمند است. با استفاده از این دستور از image مورد نظر که قبلا نصب کرده ایم یک container ایجاد کرده و اجرا می‌کنیم.

با استفاده از دستور docker run --help به دستورات زیادی برای این کامند مواجه می‌شویم که برخی کاربرد بیشتری دارند.

از جمله:

docker run -i [container name]

دستور بالا به این مفهوم است که پس از اجرای Container وارد محیط اجرای خود container شود. طبیعتا اگر container فقط خروجی داشت به محیط docker باز می‌گردیم.

docker run -t [container name]

باعث ایجاد یک ارتباط امن برای وارد شدن به محیط برنامه می‌شود.

docker run --cpu-share=1 [container name]

کامند فوق تعداد هسته‌هایی که به container اختصاص داده می‌شود را مشخص می‌کند.

به عنوان مثال دستور زیر محیط centos را با اجرا کرده و وارد محیط می‌شود. در ضمن ارتباط این container از طریق ssh امن شده و به آن دو هسته اختصاص داده می‌شود:

docker run -i -t --cpu-shares=2 centos

نکته: در دستور بالا به جای -i -t می‌توان از -it استفاده کرد.

نکته: اگر یک image موجود نباشد و ما آن را run کنیم شروع به نصب آن image می‌کند.

نکته: گاهی ممکن است چند image با یک نام داشته باشیم. برای تفکیک آن‌ها تگ را به شکل زیر به کار می‌بریم:

docker run [image name]:[tag]

مانند:

docker run -it centos:7.0.0.5

نکته: برای مشاهده کل Container‌ها اعم از مخفی و غیر مخفی از دستور docker ps -a استفاده می‌کنیم.

نکته: می‌توان به container‌ها اسم اختصاص داد. اگر از دستور docker ps -a استفاده کنیم مشاهده می‌کنیم که برای هر اجرا به container یک نام اختصاص داده شده است. این نام به صورت تصادفی به container داده می‌شود، می‌توان این نام را اختصاصی کرد:

docker run --name hitos hello-world

دستور docker ps

این دستور تمام Container‌های فعال داکر را نمایش می‌دهد.

با استفاده از دستور docker ps -a تمام container فعال یا غیر فعال را مشاهده می‌کنیم.

برای مشاهده راهنمای کل دستورات docker ps از دستور docker ps --help استفاده می‌کنیم.

دستور docker rm

با استفاده از دستور فوق می‌توانیم Container را پاک کنیم. این دستور به این شکل عمل می‌کند که ابتدا باید container id را استخراج کنیم. برای مشاهده این id از دستور docker ps -a استفاده می‌کنیم:

docker rm [container id]

نکته: اگر درون یک container باشیم برای خروج از آن از دستور exit استفاده می‌شود.

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

docker rm -f 18f7f0676cc0

برای متوقف کردن تمام container‌ها از دستور زیر استفاده می‌شود:

docker rm -f $(docker ps -a -q)

البته توجه داشته باشید این روش استفاده از روش پاک کردن تمام container‌ها تنها در لینوکس و Git Bash کاربرد دارد و در CMD ویندوز غیر قابل استفاده است، چون این دستور منحصر به لینوکس است.

دستور docker rmi

با استفاده از این دستور image را پاک می‌کنیم. برای پاک کردن می‌توان از ID و یا نام Image استفاده کرد. البته باید توجه داشته باشید اگر از image مورد نظر یک Container فعال باشد باید ابتدا آن را پاک کرد سپس اقدام به پاک کردن image کرد. مثال:

docker rmi [image id]

دستور docker commit

وقتی یک container از روی یک image ایجاد بکنیم در صورت exit شدن تمام تغییرات آن بسته می‌شود، مگر این که از آن یک image بسازیم.

برای مثال دستور docker run -it centos را ابتدا اجرا می‌کنیم.

در مسیر جاری یک فایل با دستور touch hitos.txt ایجاد می‌کنیم. با این دستور در مسیر جاری یک فایل با نام hitos.txt ایجاد می‌شود. اگر از این container خارج شویم و یک container دیگه با docker run ایجاد کنیم مشاهده می‌کنیم دیگر این فایل hitos.txt قابل دسترسی نیست.

در مثال بالا ابتدا centos را اجرا کردیم و در مسیر جاری یک فایل ایجاد کردیم و توانستیم با دستور ls آن را مشاهده کنیم. سپس از centos خارج می‌شویم و دوباره به centos وارد می‌شویم. با دستور ls مشاهده می‌کنیم دیگر فایل hitos.ir در مسیر جاری دیده نمی‌شود.

برای کامیت کردن یک کانتینر مراحل زیر را انجام می‌دهیم:

وقتی یک Container را exit کردیم با دستور docker ps -a تمام Container‌ها را مشاهده می‌کنیم. سپس با استفاده از دستور زیر یک Image از آن Container می‌سازیم:

docker commit [Container Id] [image name]:[tag]

مثلا:

docker commit 11b24629e3f5 hitos:hitos.ir

برای اجرا شدن image فوق به شکل زیر عمل می‌کنیم:

docker run hitos:hitos.ir

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

دستور docker save

این دستور برای ذخیره image مورد استفاده قرار می‌گیرد. این image ذخیره شده را می‌توان برای دیگران ارسال کرد.

docker save -o [output name] [image name]:[tag]

مثال:

docker save -o hitos.tar.gz centos:centos

فایل فوق در مسیر جاری ذخیره می‌شود.

دستور docker load

این دستور image ذخیره شده از مرحله قبل را بارگذاری می‌کند:

docker load -i [input zipped image]

مثال:

docker load -i hitos.tar.gz

منتظر انتقادات و پیشنهادات سازنده شما در بخش نظرات هستیم.

تگ ها: windows / ویندوز linux / لینوکس Docker
نظر خود را برای این مطلب وارد کنید
دریافت خبرنامه
مهدی
داکر چه تفاوتی با Vmware یا virtualbox داره؟
alirez
داکر واقعا راحت و کاربردیه. استفاده از اونو به همه توصیه می کنم.
سحر جنگلی

خسته نباشید
ممنون از اطلاعات خوبتون
میشه یه راهنمایی در مورد Docker Compose بفرمایید

پاسخ:

Docker Compose ابزاریه برای اجرا کردن چند Container.

موضوعات بخش شبکه و امنیت

مطالب برگزیده مجازی سازی

مطالب برگزیده سایت