گنو/لینوکس

معرفی و شروع کار با Docker

نوشته شده توسط اروند طباطبایی

Docker یک برنامه اپن سورس بر پایه کانتیر ها یا محفظه ها است که این روزها نقل محافل سیستم ادمین ها و افرادی که با سرور ها سر و کار دارند شده است. البته کانتینر ها آنقدرها هم جدید نیستند! پس چه چیزی باعث محبوبیت Docker شده است؟ داکر برپایه linux containers یا همان lxc ساخته شده است که بر روی لینوکس اجرا می‌شود و استفاده از آن بسیار راحت و کارآمد است. زمانی که کانتینر یا جعبه های داکر را کاملاً با ماشین‌های مجازی مقایسه کنیم میبینیم که ماشین‌های مجازی تمام سربارهای مجازی را با خود حمل میکنند و یک سیستم در عین واحد باید چندین سیستم عامل را بر روی خود اجرا کند که عاقلانه به نظر نمیرسد و سرباری زیادی را با خود به همراه می آورد. کانتینتر های داکر منابع و موارد مشترک در سیستم عامل را به اشتراک گذاشته و از آن‌ها به صورت بهینه تری استفاده میکند به همین دلیل است که Docker میتوانید در مواردی جایگزین ماشین‌های مجازی شود برای مثال من در آزمایشگاه خودم اسپین های مختلفی را از توزیع‌ها تست میکنم و کاملاً برای اینکار Docker را جایگزین ماشین مجازی کرده‌ام در این مورد Docker بسیار سریع‌تر عمل میکند و مصرف منابع خیلی کمتری نسبت به ماشین‌های مجازی دارد.

همچنین Docker برای دیتاسنترها نیز بسیار مناسب است و میتوانند در سرور ها در آن واحد داکر های بیشتری نسبت به ماشین‌های مجازی اجرا کنند و این مورد در بحث‌های پکیج ها و توزیع‌ها کار را بسیار آسان‌تر و سبک‌تر میکند.

DockerLogo

کانتینر یا حامل ها Docker قسمتی از یک نرم‌افزار را بر روی فایل سیستم کاملی اجرا میکنند که تمام چیزهایی که برنامه برای اجرا به آن نیاز دارد را در خود دارند همانند : کدها ؛ کتابخانه‌های سیستم ؛ ابزارهای سیستمی و هرچیز دیگری که بر روی سرور نصب میکنید و این موادر تضمین میکند که سیستم همیشه همانند قبل و همانطوری که بوده اجرا شود و بدون در نظر گرفتن محیطی که در آن قرار دارد کار خود را به خوبی انجام دهد.

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

نصب کردن Docker

تقریباً به اندازه کافی در مورد داکر و اینکه چه کاری انجام میدهد صحبت کردیم و فهمیدیم که در داکر میتوانید نرم‌افزار خود را به صورتی که دوست دارید کانفیگ کرده و بدون در نشر گرفتن سیستم عاملی که در آن هستید و بدون نیاز به ماشین مجازی نرم‌افزار خود را هرجایی که خواستید و با سرعتی بیشتر از ماشین‌های مجازی و مصرف منابعی کمتر اجرا کنید؛ حال وقت آن رسیده تا ترمینال را باز کرده و کمی تفریح کرده و به داکر سلام کنیم.

docker-webpage

بهترین روش برای نصب Docker استفاده از نصاب خود داکر است که فوق‌العاده کامل است. در زیر توجه کنید که سیستم من به راحتی شناسایی شده و نیازمندی های آن به صورت خودکار نصب می‌شوند :

allf@204:~$ wget -qO- https://get.docker.com/ | sh
[sudo] password for allf:
modprobe: FATAL: Module aufs not found.
+ sudo -E sh -c sleep 3; apt-get update
+ sudo -E sh -c sleep 3; apt-get install -y -q linux-image-extra-4.4.0-040400-generic linux-image-extra-virtual
+ sleep 10
apparmor is enabled in the kernel and apparmor utils were already installed
+ sudo -E sh -c apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
+ sudo -E sh -c mkdir -p /etc/apt/sources.list.d
+ sudo -E sh -c echo deb https://apt.dockerproject.org/repo ubuntu-wily main > /etc/apt/sources.list.d/docker.list
+ sudo -E sh -c sleep 3; apt-get update; apt-get install -y -q docker-engine
+ sudo -E sh -c docker version

 

همانطور که در بالا میبینید نصاب داکر از دستورات استاندارد لینوکسی استفاده میکند ؛ پس از آنکه کار نصاب تمام شد نیاز دارید تا خود را به گروه داکر اضافه کنید و پس از آن میتوانید داکر را بدون دسترسی روت هم اجرا کنید (به یاد داشته باشید که پس از اضافه شدن به گروه باید از نشست خود خارج شده و log out کنید پس از log in کردن دوباره قابلیت فعال خواهد شد)

برای اینکار دستور زیر را وارد میکنیم :

sudo usermod -aG docker test

به جای test یوزر خود را وارد میکنیم.

اجرای Hello Wrold!

میتوانیم برای اطمینان از اینکه داکر درست نصب شده یک hello world در آن اجرا کنیم :

allf@204:~$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
[snip]
Hello from Docker.
This message shows that your installation appears to be working correctly

docker-whalesay-image-download

این دستور یک سلام دنیا را بر روی داکر نصب میکند که نتیجه آن سلام کردن داکر به شما در ترمینال است. Docker یک ابزار جالب به نام whalesay دارد که همچون cowsay در لینوکس است و یک وال به شما میدهد که میتواند برای آن دیالوگی را تعریف کنید. دستور زیر را در ترمینال وارد کنید :

allf@204:~$ docker run docker/whalesay cowsay "Visit digispark.ir every day!"

docker-image-whalesay-pic

به دلیل اینکه اولین بار بود که از داکر استفاده میکردیم یک سری ایمیج دانلود شد؛ برای دفعات بعدی میتوانید بدون نیاز به دانلود Docker را اجرا کنید. برای مشاهده ایمیج های دانلود شده توسط داکر میتوانید دستور زیر را وارد کنید :

allf@204:~$ sudo docker images
[sudo] password for allf:
REPOSITORY       TAG      IMAGE ID      CREATED       VIRTUAL SIZE
hello-world      latest   0a6ba66e537a  7 weeks ago   960 B
docker/whalesay  latest   ded5e192a685  6 months ago  247 MB

 

این ایمیج ها دقیقاً در مسیر var/lib/docker ذخیره میشوند.

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

در قسمت بعدی از این مقاله در مورد ایمیج ها و کانتینر هم صحبت خواهیم کرد.

درباره نویسنده

اروند طباطبایی

بنیانگذار دیجی اسپارک: اولین مرجع تخصصی امبدد سیستم به زبان فارسی / کارشناس سئو و تولید محتوا

هرچه می آموزم میبینم که خیلی کم آموختم. علاقه به رباتیک و تکنولوژی دارم. امیدوارم بتونم دانشی را که آموخته‌ام، به روش‌های مختلفی به کاربران علاقمند منتقل کنم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۸ دیدگاه

  • با عرض سلام
    خیلی ممنون از مطلب آموزش تون.
    یک مشکلی در کار کردن با داکر داشتم. من داکر ایمیج را دانلود و نصب کردم. درمرحله استفاده از آن پیام می دهد که اول دایرکتوری home را mount کنید. دستور run که استفاده می کنم به این صورت است:
    docker run -v /Users/:/host -p 9000:9000 -p 8000:8000 -p 5000:5000 -t -i bjoffe/openface_flask_v2 /bin/bash
    مشکل من اینجاست که وقتی داکر اجرا میشود فایل های کامپیوتر خودم را نمی بینم.
    ممنون میشوم من را راهنمایی کنید.

    • سلام
      ضمن تشکر از توجه ویژه شما به این مطلب، من چند ماهی هست که مجددا تصمیم گرفتم از لینوکس به سمت ویندوز مهاجرت کنم. برای پاسخ دادن این سوال شما باید لینوکس را فعال کنم تا بتونم پاسخ صحیح و منتطقی خدمت شما دوست عزیز ارسال کنم. از این رو از دوستانی که در زمینه لینوکس همچنان کار میکنند تقاضا دارم که این سوال را پاسخ دهند.
      در ادامه مراحلی را که تا اینجا رفته‌اید توضیح دهید؛ ممکن است مشکل خیلی ساده حل شود.

      • ضمن تشکر از توجه شما، ترجیها پاسخ مشکلات را در همینجا به صورت کامنت بنویسید که دیگر کابران هم بتوانند استفاده کنند.

  • سلام
    خسته نباشید
    من برای نصب برنامه meep که فقط روی لینوکس نصب میشه داکر نصب کردم الان برای نصب این برنامه دستور
    apt-get insatall meep باید استفاده کنم سوالم اینه که این دستور رو توی docker quick.. میزنم command not found میده روش نصب درسته چیکار باید بکنم؟مرسی

    • با سلام
      ضمن تشکر از توجه شما، بنده در این زمینه اطلاعات به روز ندارم، از دیگر کاربران که با این موضوع آشنا هستند، تقاضا دارم تا پاسخ شما را از همین طریق اعلام کنند.

      • سلام
        من بالاخره بعد update و ubuntu تونستم نصب کنم شمایا دوستان اظلاع دارین که چرا بعد از نصب پنجره کامند رو که می بندم و دوباره در محیط جدید ubuntu , برنامه ای رو که نصب کردم رو ارور not found command میده

        • با سلام
          ضمن تشکر از توجه شما، بنده خیلی وقت هست که با لینوکس کار نمی‌کنم. از این رو از دیگر کاربران که تخصص کافی دارند، تقاضا دارم در این بحث شرکت کنند.