صادق محبی
صادق محبی
خواندن ۵ دقیقه·۶ سال پیش

کامند های پرکاربرد داکر و یک تجربه ی عملی

معمولا عکسایی که برای داکر می ذارن از کانتینر هاست ولی خب خیلی خشن و بی روحن! به جاش من اینو از آن اسپلش پیداکردم که هم کانتینر داره و هم دوچرخه که خیلی دوست دارم (و حدود سه سالی هست نشده که دوچرخه سواری کنم)
معمولا عکسایی که برای داکر می ذارن از کانتینر هاست ولی خب خیلی خشن و بی روحن! به جاش من اینو از آن اسپلش پیداکردم که هم کانتینر داره و هم دوچرخه که خیلی دوست دارم (و حدود سه سالی هست نشده که دوچرخه سواری کنم)

پیش نوشت۱: داکر واقعا فوق العادست و از وقتی که باهاش آشنا شدم هر چه قدر یاد می گیرم احساس می کنم خیلی بیشتر نمی فهمم! (خب این طبیعیه) و هزار مطلب و چالش جدید توی داکر هست برای تجربه کردن و حرفه ای شدن

پیش نوشت۲: دو بار دیگه هم قبلا درباره ی داکر نوشتم یا ازشون استفاده کردم و اگر خواستید بهشون سری بزنید:

تست سرعت Apache و Nginx با طعم داکر و NodeJs

تجربه ی کار با REST API وردپرس و کانفیگ اون با nginx و داکر


اصطلاحاتی درباره ی داکر که بهتره قبل از هر چیز مرورشون کنیم

  • لایه Layer: کامند ها و یا فایل ها و اسکریپت خاصی که اون محیط مورد نظرمون رو برای اجرای اپلیکیشن می سازند. هر لایه روی لایه های قبلی سوار می شوند و اعمال کننده ی تغییراتی روی لایه (های) قبلی هستند. مثلا هر مرحله ی آماده سازی برای اجرای یک وب سرویس نود جی اس ساده می تواند به عنوان یک لایه تعریف شود به این صورت که پشت سر هم باید انجام بشوند تا محیط مناسب مورد نیاز برای اجرا آن وب سرویس فراهم شود.
  • ایمیج Image: لایه های تغییرناپذیر که پایه ی یک کانتینر را تشکیل می دهند.
  • کانتینر Container: نمونه ای کامل از ایمیج که قابل پردازش و اجرا به عنوان برنامه است. کانتینر از لایه های تغییرناپذیری تشکیل شده که روی ایمیج اصلی سوار شده اند (و ایمیج خود لایه های تغییرناپذیر مستقل و جداکانه ای دارد) مثلا فایل زیر نمونه ای از Dockerfile (فایل مربوط به ایجاد کانتینر یا ایمیج) برای node js است که هر خط یک لایه از کانتینر را تشکیل می دهد.
  • رجیستری Registry: محلی برای ذخیره و اشتراک گذاری ایمیج ها
  • ریپو Repository: مجموعه ای از کانتینر های در کنار هم (چه یک اپلیکیشن را تشکیل بدهند و چه متفاوت باشند)
  • داکر هاب Docker hub: رجیستری اصلی برای ایمیج ها که توسط شرکت داکر ایجاد شده
FROM node:latest MAINTAINER "mohebbi.sadegh@gmail.com" RUN mkdir -p /nodejs/app WORKDIR /nodejs/app/ #copy app files to WORKDIR COPY index.js . COPY package.json . #install nodejs dependencies RUN npm install CMD npm install && node index.js

نکاتی مختصر مفید درباره ی ستاپ اپلیکیشن ها با داکر

  • سعی کنید تا جای ممکن ایمیج هارو کوچک نگه دارید (مثلا node js و mongo db و redis رو توی یه ایمیج ستاپ نکنید بلکه به صورت سه تا ایمیج جداگانه شبکه ای و یک ریپو ستاپ کنید) این کار باعث افزایش سرعت در ساخت و اجرا و انتقال خواهد شد. پلاگین یا نرم افزار های اضافی به ایمیج اضافه نکنید مگر این که واقعا برای اجرای اپلیکیشن تون لازم باشه
  • اگر اپلیکیشن شما نیاز به مقیاس پذیری دارد ، از docker swarm استفاده کنید چرا که تمامی نیاز های شما در خصوص مدیریت دسته ها به صورت ماشین های مجازی را داراست (کارای عجیب و غریب نکنید و خلاصه این که ساده نگهش دارید)
  • برای تجربه ی حس لذت بخش کارایی و سرعت در توسعه ی اپلیکیشن (و لازم برای تیم های بزرگ و حرفه ای) از ابزار های CI/CD استفاده کنید. می توان از یه نمونه ساده و عالی به نام Gitlab نام برد. البته داکر کلود هم هست که خیلی از فرایند های داکر رو اتوماتیک انجام می ده (که خودم باهاش کار نکردم)

کامند های پرکاربرد و لازم برای شروع کار با داکر

توسعه و کار با داکر ایمیج

  • docker create [image]: ایجاد کانتینر از ایمیج
  • docker login: لاگین کردن به داکر هاب
  • docker pull [image]: دانلود ایمیج از داکر هاب
  • docker push [username/image]: آپلود ایمیج به داکر هاب (انتشار به صورت عمومی)
  • docker search [term]: جستجو بین ایمیج ها در داکر هاب
  • docker tag [source] [target]: تگ و نشان گذاری برای داکر ایمیج تون

اجرای داکر کانتینر

  • docker start [container]: اجرای کانتینر
  • docker stop [container]: توقف کانتینر
  • docker exec -ti [container] [command]: اجرای کامند یا دستور خط فرمان در کانتینر
  • docker run -ti — image [image] [container] [command]: اجرا یا ایجاد کانتینر از یک ایمیج و اجرای کامند مورد نظر به صورت همزمان پس از ایجاد یا اجرا
  • docker run -ti — rm — image [image] [container] [command]: همون کارای کامند قبلی به علاوه ی حذف کانتینر پس از اجرای کامند
  • docker pause [container]: توقف موقت تمامی فعالیت های کانتینر

استفاده از ابزار های داکر

  • docker history [image]: نمایش تاریخچه ی ایمیج
  • docker images: نمایش لیست ایمیج ها
  • docker inspect [object]: نمایش مختصر از اطلاعات عمومی ایمیج یا کانتینر
  • docker ps: نمایش لیست کانتینر های اجرا شده و وضعیت آن ها
  • docker version: ورژن داکر که روی سیستم تون نصبه

تمیز کردن محیط داکر

  • docker kill [container]: کشتن! یه کانتینر
  • docker kill $(docker ps -q): قتل عام کانتینر ها
  • docker rm [container]: حذف یه کانتینر
  • docker rm $(docker ps -a -q): حذف تمامی کانتینر ها

استفاده ای عملی و سریع از دستورات داکر در حالتی که تغییراتی روی کد های اپلیکیشن دادید

اولا: دوره ای هست که آقای طهانی تهیه کردند رو حتما ببینید ، برای شروع خیلی خوبه. از اینجا می تونید به این دوره دسترسی داشته باشید.

دوما: ما توی چندپر از تکنولوژی های تقریبا زیاد و گوناگونی در سمت بک اند استفاده می کنیم و برای مدیریت و اجرا و ستاپ همه ی این ها در کنار همدیگه ، چاره ی کار رو در استفاده از docker compose دیدیم. واقعا ابزار فوق العاده عالی و قدرتمندی هست (من که خیلی حال کردم باهاش!) البته بحث من اینجا فقط داکر هست و نیازه که توی فرصت دیگه ای در موردش گپ بزنیم. به هر حال ،‌ فرض کنید شما کد های بک اند رو تغییر دادید ،‌سریع ترین و ساده ترین راهی که من بلدم تا این تغییرات در داکر کانتینر اعمال بشه کامند های زیر هست:

# your application code should be updated git pull origin master # build updated docker compose service docker-compose build [service name] # start docker compose again (updated docker container automatically recreated) docker-compose up -d

و تمام ... خیلی دوست دارم درباره ی آشنایی یک ساله ام با docker compose براتون بگم (اینقدر ذوق کردم!) ولی بماند برای ویرگولی دیگر

پس نوشت۱: منبع بخش ابتدایی این نوشته ،‌ترجمه ای آزاد از این مطلب است.

پس نوشت۲: جدیدا بک اند نوشتن با Lua توجه منو به خودش جلب کرده! (قبلا بازی سازی باهاش توجه منو به خودش جلب کرده بود ولی ادامه پیدا نکرد) دارم در موردش تحقیق می کنم. کسی کار کرده؟

dockerداکرکامند های پرکاربردآشنایی با داکرآموزش کار با داکر
برنامه نویس node js و DevOps کار - دانش‌آموخته اقتصاد علاقه‌مند به کارآفرینی و استارتاپ ها - sadeghmohebbi.ir
شاید از این پست‌ها خوشتان بیاید