در مقاله قبل با مفهوم docker, container, image تا حدود زیادی آشنا شدیم. در این بخش قصد داریم با دستورات داکر آشنا بشیم.
نمایش ورژن داکر
docker --version /// output: Docker version 24.0.5, build ced0996
نمایش ورژن داکر به همراه جزئیات بیشتر
docker version /// Output Client: Version: 24.0.5 API version: 1.43 Go version: go1.20.6 Git commit: ced0996 Built: Fri Jul 21 20:32:30 2023 OS/Arch: darwin/amd64 Context: desktop-linux Server: Docker Desktop 4.21.1 (114176) Engine: Version: 24.0.2 ...
نمایش اطلاعات با جزئیات در مورد داکر
docker info /// output Client: Version: 24.0.5 Context: desktop-linux Debug Mode: false Plugins: buildx: Docker Buildx (Docker Inc.) ... Server: Containers: 7 Running: 6 Paused: 0 Stopped: 1 Images: 8 Server Version: 24.0.2 ...
ما میتوانیم به دو صورت زیر یک container را اجرا کنیم، تفاوت این دو دستور چیست؟
docker container run IMAGE_NAME docker container start IMAGE_NAME
وقتی از run استفاده میکنیم، همیشه یک container جدید ساخته میشود ولی وقتی از start استفاده میکنیم containerی که وجود دارد و قبلا stop شده است اجرا میشود.
docker image ls
docker image ls --all OR => docker image ls -a
## running container docker container ls / OR => docker ps ## list of the all containe docker container ls --all / OR => docker ps -a docker container ls -a ## all container ID in quiet mode docker container ls -aq / OR OR => docker ps -aq
docker container logs CONTAINER_NAME/CONTAINER_ID
docker container top CONTAINER_NAME/CONTAINER_ID
به صورت پیشفرض ما فقط میتوانیم containerی را که در حالت اجرا نیست حذف کنیم ولی با اضافه کردن کامند -f میتوانیم آن را force کنیم که حذف شود.
docker container rm CONTAINER_NAME/CONTAINER_ID docker container rm -f CONTAINER_NAME/CONTAINER_ID
وقتی بخواهیم کانفیگ یک کانتینر را بررسی کنیم از جمله network, valume,… و همه مواردی که وجود دارد با استفاده از inspect اینکار را انجام میدهیم.
docker container inspect CONTAINER_NAME/CONTAINER_ID
طبق تجربه ای که قبلا داشتم برای یکی از APIهایی که توی پروژه داشتیم به خاطر query سنگینی که توی دیتابیس داشتیم خطای پرشدن مصرف مموری را توی لاگ خطاهای پروژه داشتیم یکی از کارهایی که کردم مانیتور container و بهبود و مقایسه میزان مصرف مموری طی هر ریفکتور بود.
docker container stats
در ابتدا قبل از اینکه استفاده از option مورد نظر یعنی -it رو توضیح بدیم با استفاده از کامند –help ساختار کامند داکر را بررسی کنیم:
با اجرای دستور docker container run –help لیستی از optionهایی که میتوانیم از آنها استفاده کنیم و هچنین ساختار دستور را مشاهده میکنیم.
اگر سکرول کنیم پایینتر توضیحات آپشنهای -i و -t را مشاهده میکنیم.
با اجرای دستور زیر میتوانیم همزمان هم container را اجرا کنیم و هم ترمینال داخل container را جهت اجرای دستورات bash باز نگه داریم.
docker container run -it --name nginx_server nginx bash
برای مثال ما میتوانیم یک image خاص مثل alpine یا ubuntu را اجرا کنیم و با استفاده از bash وارد ان شویم و ان را آپدیت کنیم و پکیج های مختلف نصب کنیم و …
نکته: با استفاده از دکمه های Ctr + d میتوانیم از محیط container خارج شویم.
در کامندهای قبل ما همزمان با ایجاد یک container وارد محیط آن هم شدیم و bash را اجرا کردیم. حالا اگر بخواهیم آن را start کنیم با استفاده از راهنمای داکر آن را مشاهده کنیم:
حال اگر بخواهیم وارد محیط یک container شویم که قبلا ایجاد شده است و دستوراتی را اجرا کنیم به صورت زیر اقدام میکنیم:
docker container start -ai ubuntu
همانطور که در دستورات قبل دیدیم با استفاده از run -it میتوانیم همزمان container را ایجاد و با اضافه کردن کامند وارد محیط کانتینر شویم ولی اگر یک container در حال اجرا داشته باشیم و بخواهیم یک command به آن اضافه کنیم بدون اینکه آن را stop و دوباره start کنیم از دستور زیر استفاده میکنیم:
docker container exec -it CONTAINER_NAME COMMAND