- Docker چیست؟ آشنایی و نصب داکر قسمت اول
- آشنایی بیشتر با 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
خسته نباشید
ممنون از اطلاعات خوبتون
میشه یه راهنمایی در مورد Docker Compose بفرمایید
Docker Compose ابزاریه برای اجرا کردن چند Container.