گنو/لینوکس

ساخت ایمیج شخصی در Docker

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

ایمیج whalesay که در قسمت قبلی نصب کردیم میتواند بهبود های بیشتری داشته باشد و از یک برنامه ساده خارج شود. اینکه فقط یک ایمیج داشته باشید و با دستور زیر به آن بگویید چه نمایش دهد آنقدرها هم کار راه انداز و مفید نیست.

docker run docker/whalesay cowsay boo-boo

 

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

مرحله اول : نوشتن یک فایل Docker

در این مرحله از ویرایشگر متن محبوب خود کمک بگیرید تا یک متن کوتاه با آن بنویسیم؛ به این متن فایل Docker میگویند. فایل داکر در مورد نرم افزاری که در یک ایمیج bake می‌شود (به اصطلاح پخته میشود) توضیحات لازم را ارائه میدهد. همچنین میتواند توضیح دهد که نرم‌افزار از چه محیطی استفاده کند و یا مجاز به استفاده از چه دستوراتی است.

– ترمینال خود را باز کنید

– یک دایرکتوری جدید ایجاد کنید :

mkdir mydockerbuild

 

این دایرکتوری یک contex برای ما است. Contex جایی است که تمامی فایل‌های مورد نیاز ما در آن نگهداری میشوند.

– به دایرکتوری جدید بروید :

cd mydockerbuild

 

در حال حاضر دایرکتوری ما خالی است؛ یک فایل تکست در آن ایجاد میکنیم و اسم آن را dockerfile قرار میدهیم.

– فایل داکر خود را با ویرایشگری مانند نانو یا ویرایشگر دلخواه خود باز کنید و خطی همانند زیر به آن اضافه کنید :

FROM docker/whalesay:latest

 

دستور from به داکر میگوید که ایمیج شما از چه بیسی اجرا می‌شود و بر پایه چیست.

– حال برنامه fortune را به ایمیج خود اضافه میکنیم :

RUN apt-get -y update && apt-get install -y fortunes

 

این برنامه به صورت کامند لاینی کار میکند و جمله‌های زیبایی را در محیط متنی برای ما چاپ خواهد کرد که میتوانیم آن‌ها را به whalesay بدهیم تا نمایش دهد.

– پس از آنکه ایمیج ما نرم افزاری را که نیاز داریم دارا شد باید ایمیج را طوری بسازیم که با اجرا شدنش نرم‌افزار ما نیز اجرا شود.

CMD /usr/games/fortune -a | cowsay

 

این خط به firtune میگوید تا از برنامه cowsay برای بیان جملات استفاده کند.

– کری که انجام دادید را بررسی کنید و فایلتان باید چیزی شبیه به این باشد :

FROM docker/whalesay:latest

RUN apt-get -y update && apt-get install -y fortunes

CMD /usr/games/fortune -a | cowsay

 

container-docker-blue-whale

– فایل داکر خود را ذخیره کرده و ببندید. تا اینجا تمامی کارها و نرم افزارهایی را که نیاز داشتیم در فایل پیاده‌سازی کرده‌ایم و آماده ایم تا یک ایمیج جدید بسازیم.

مرحله دوم : ساخت ایمیج از طریق فایل Docker

حال ایمیج جدید خود را با دستور زیر build کنید و توجه داشته باشید که در آخر دستور . را به کار ببرید.

$ docker build -t docker-whale .

Sending build context to Docker daemon 158.8 MB

...snip...

Removing intermediate container a8e6faa88df3

Successfully built 7d9495d03763

 

 

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

مرحله سوم : یادگیری پروسه build گرفتن

دستور docker build -t docker-whale . فایل داکر را در دایرکتوری فعلی گرفته و ایمیجی با نام docker-whale در ماشین شما ایجاد میکند. این دستور چند دقیقه‌ای طول میکشد و خروجی بسیار کاملی میدهد در این قسمت میخواهیم هر پیام را بررسی کنیم تا بفهمیم چه اتفاقاتی در حال وقوع است.

ابتدا داکر چک میکند تا بفهمد هرچیزی را که برای ساختن ایمیج نیاز دارد در دسترس داشته باشد.

Sending build context to Docker daemon 158.8 MB

 

داکر با ایمیج whalesay اجرا می‌شود و از آنجایی که این ایمیج به صورت محلی ذخیره شده است و داکر نیازی به دانلود نخواهد داشت.

Step 0 : FROM docker/whalesay:latest

---> fb434121fc77

 

سپس داکر به مرحله بعد رفته که آپدیت کردن پکیج منیجر apt است. این دستور خطوط زیادی را تولید میکند که نیازی نیست آن‌ها را مطالعه کنیم.

Step 1 : RUN apt-get -y update && apt-get install -y fortunes

---> Running in 27d224dfa5b2

Ign http://archive.ubuntu.com trusty InRelease

Ign http://archive.ubuntu.com trusty-updates InRelease

Ign http://archive.ubuntu.com trusty-security InRelease

Hit http://archive.ubuntu.com trusty Release.gpg

....snip...

Get:15 http://archive.ubuntu.com trusty-security/restricted amd64 Packages [14.8 kB]

Get:16 http://archive.ubuntu.com trusty-security/universe amd64 Packages [134 kB]

Reading package lists...

---> eb06e47a01d2

docker

سپس داکر نرم‌افزار fortune را نصب میکند.

Removing intermediate container e2a84b5f390f

Step 2 : RUN apt-get install -y fortunes

---> Running in 23aa52c1897c

Reading package lists...

Building dependency tree...

Reading state information...

The following extra packages will be installed:

fortune-mod fortunes-min librecode0

Suggested packages:

x11-utils bsdmainutils

The following NEW packages will be installed:

fortune-mod fortunes fortunes-min librecode0

۰ upgraded, 4 newly installed, 0 to remove and 3 not upgraded.

Need to get 1961 kB of archives.

After this operation, 4817 kB of additional disk space will be used.

Get:1 http://archive.ubuntu.com/ubuntu/ trusty/main librecode0 amd64 3.6-21 [771 kB]

...snip......

Setting up fortunes (1:1.99.1-7) ...

Processing triggers for libc-bin (2.19-0ubuntu6.6) ...

---> c81071adeeb5

Removing intermediate container 23aa52c1897c

 

و در آخر داکر کار خود را تمام کرده و خروجی را اطلاع رسانی میکند.

Step 3 : CMD /usr/games/fortune -a | cowsay

---> Running in a8e6faa88df3

---> 7d9495d03763

Removing intermediate container a8e6faa88df3

Successfully built 7d9495d03763

 

 

مرحله چهارم : اجرای docker-whale جدید

در این مرحله میخواهیم مطمئن شویم که فایل در سیستم موجود شده است و در آخر ایمیج خود را اجرا میکنیم.

– اگر ایمیج در آنجا نباشد باید نشانگر موس خود را بر روی پیام ترمینال ببرید

– عبارت docker images را تایپ کنید و اینتر بزنید

اگر به یاد داشته باشید این دستور ایمیج های موجود در سیستم که مربوط به داکر می‌شود را نمایش میدهد.

$ docker images
REPOSITORY           TAG          IMAGE ID          CREATED             VIRTUAL SIZE
docker-whale         latest       7d9495d03763      4 minutes ago       273.7 MB
docker/whalesay      latest       fb434121fc77      4 hours ago         247 MB
hello-world          latest       91c95931e552      5 weeks ago         910 B

 

 

– ایمیج جدید خو را با تایپ دستور docker run docker-whale اجرا کنید.

$ docker run docker-whale
 _________________________________________
/ "He was a modest, good-humored boy. It  
 was Oxford that made him insufferable." /
 -----------------------------------------
          
           
            
                          ##        .
                    ## ## ##       ==
                 ## ## ## ##      ===
             /""""""""""""""""___/ ===
        ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
             ______ o          __/
                          __/
                __________/

 

 

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

در بخش بعدی ساخت اکانت در داکرهاب و همچنین اضافه کرن یک مخزن شخصی به آن را آموزش خواهیم داد.

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

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

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

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

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

۲ دیدگاه

  • سلام
    مشکلی که من الان دارم اینه که وقتی میخوام ایمیج ها رو با دستور pull دریافت کنم پیغام میده به دلیل تحریم آی پی شما بلاک شده است 🙁
    از قندشکن هم استفاده میکنم به شدت سرعت پایین میاد و عملا بعد از چند دقیقه متوقف میشه.
    ممنون میشم اگه راهنمایی کنید چکار کنم

    • سلام
      خود داکر رو باهاش صحبت کردن و گفته ممکنه تحریم هارو برداره ولی الان چندماهی هست که اینکارو نکرده.
      فعلا روش خوبی برای اینکه بتونسد تحریم داکر رو دور بزنید نیست مگر اینکه اونو رو یه سرورمجازی توی کشور دیگه اجرا بکنید!
      حالا اگه بتونید ایمیجی که روی سرورتون میگیرید رو دریافت کنید رو سیستم فک کنم مشکل رفع بشه.