قسمت دوم :
برای اجرای دستورات داکر همانطور که در پست قبل گفته شد باید از آیکون Docker Quickstart Terminal استفاده کرد. توجه کنید که با دستور docker --help میتوانید به راهنمای دستورات داکر دسترسی پیدا کنید.
حال سوالی این جا مطرح میشود و آن هم این که چگونه میتوانیم دستورات داکر را در CMD ویندوز و یا Git Bash اجرا کرد؟
جواب این سوال ساده است. در هر ترمینالی که مایلید میتوانید دستور زیر را وارد کنید:
docker-machine env default
Copy
این دستور متغیرها و آدرسهای پیشفرض داکر را نمایش میدهد و در دو سطر آخر خود دستوری را معرفی میکند که با این دستور میتوانیم دستورات را در ترمینال جاری اجرا کرد. مثلا اگر دستور فوق را در CMD ویندوز وارد کنیم دستور زیر برای فعال شدن داکر در CMD مورد استفاده قرار میگیرد:
@FOR /f "tokens=*" %i IN ('docker-machine env default') D
Copy
در Git Bash نیز دستور زیر را دریافت میکنیم:
eval $("C:\Program Files\Docker Toolbox\docker-machine.exe" env default)
Copy
پس در هر خط فرمان و هر سیستم عاملی برای اجرای دستورات داکر از دستور ذکر شده در بالا استفاده میکنیم.
دستور docker images
این دستور برای انجام عملیات روی imageها کاربرد دارد. برای آشنایی هرچه بیشتر از دستور docker images --help استفاده کنید.
با کد زیر تمام imageها حتی اگر مخفی باشند به نمایش در میآیند:
docker images -a
Copy
با کد زیر فقط Image Id را نمایش میدهیم:
docker images -q
Copy
دستور docker pull
با این دستور آخرین نسخه از Images را میتوان دریافت کرد:
docker pull centos
Copy
دستور docker search
با استفاده از این دستور میتوانیم کل Imagesها را جستجو کرد:
docker search Ubuntu
Copy
دستور docker run
این دستور بسیار پرکاربرد و قدرتمند است. با استفاده از این دستور از image مورد نظر که قبلا نصب کرده ایم یک container ایجاد کرده و اجرا میکنیم.
با استفاده از دستور docker run --help به دستورات زیادی برای این کامند مواجه میشویم که برخی کاربرد بیشتری دارند.
از جمله:
docker run -i [container name]
Copy
دستور بالا به این مفهوم است که پس از اجرای Container وارد محیط اجرای خود container شود. طبیعتا اگر container فقط خروجی داشت به محیط docker باز میگردیم.
docker run -t [container name]
Copy
باعث ایجاد یک ارتباط امن برای وارد شدن به محیط برنامه میشود.
docker run --cpu-share=1 [container name]
Copy
کامند فوق تعداد هستههایی که به container اختصاص داده میشود را مشخص میکند.
به عنوان مثال دستور زیر محیط centos را با اجرا کرده و وارد محیط میشود. در ضمن ارتباط این container از طریق ssh امن شده و به آن دو هسته اختصاص داده میشود:
docker run -i -t --cpu-shares=2 centos
Copy
نکته: در دستور بالا به جای -i -t میتوان از -it استفاده کرد.
نکته: اگر یک image موجود نباشد و ما آن را run کنیم شروع به نصب آن image میکند.
نکته: گاهی ممکن است چند image با یک نام داشته باشیم. برای تفکیک آنها تگ را به شکل زیر به کار میبریم:
docker run [image name]:[tag]
Copy
مانند:
docker run -it centos:7.0.0.5
Copy
نکته: برای مشاهده کل Containerها اعم از مخفی و غیر مخفی از دستور docker ps -a استفاده میکنیم.
نکته: میتوان به containerها اسم اختصاص داد. اگر از دستور docker ps -a استفاده کنیم مشاهده میکنیم که برای هر اجرا به container یک نام اختصاص داده شده است. این نام به صورت تصادفی به container داده میشود، میتوان این نام را اختصاصی کرد:
docker run --name hitos hello-world
Copy
دستور 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]
Copy
نکته: اگر درون یک container باشیم برای خروج از آن از دستور exit استفاده میشود.
نکته: اگر یک container فعال باشد نمیتوان آن را remove کرد. container را هم میتوان به صورت تکی متوقف کرد و یا این که از -f استفاده کرد. این دستور ابتدا container را متوقف کرده و سپس پاک میکند.
docker rm -f 18f7f0676cc0
Copy
برای متوقف کردن تمام containerها از دستور زیر استفاده میشود:
docker rm -f $(docker ps -a -q)
Copy
البته توجه داشته باشید این روش استفاده از روش پاک کردن تمام containerها تنها در لینوکس و Git Bash کاربرد دارد و در CMD ویندوز غیر قابل استفاده است، چون این دستور منحصر به لینوکس است.
دستور docker rmi
با استفاده از این دستور image را پاک میکنیم. برای پاک کردن میتوان از ID و یا نام Image استفاده کرد. البته باید توجه داشته باشید اگر از image مورد نظر یک Container فعال باشد باید ابتدا آن را پاک کرد سپس اقدام به پاک کردن image کرد. مثال:
docker rmi [image id]
Copy
دستور 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]
Copy
مثلا:
docker commit 11b24629e3f5 hitos:hitos.ir
Copy
برای اجرا شدن image فوق به شکل زیر عمل میکنیم:
docker run hitos:hitos.ir
Copy
تصویر فوق به طور کامل یک مثال از کامیت را به نمایش در میآورد.
دستور docker save
این دستور برای ذخیره image مورد استفاده قرار میگیرد. این image ذخیره شده را میتوان برای دیگران ارسال کرد.
docker save -o [output name] [image name]:[tag]
Copy
مثال:
docker save -o hitos.tar.gz centos:centos
Copy
فایل فوق در مسیر جاری ذخیره میشود.
دستور docker load
این دستور image ذخیره شده از مرحله قبل را بارگذاری میکند:
docker load -i [input zipped image]
Copy
مثال:
docker load -i hitos.tar.gz