ایمیج 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
– فایل داکر خود را ذخیره کرده و ببندید. تا اینجا تمامی کارها و نرم افزارهایی را که نیاز داشتیم در فایل پیادهسازی کردهایم و آماده ایم تا یک ایمیج جدید بسازیم.
مرحله دوم : ساخت ایمیج از طریق فایل 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
سپس داکر نرمافزار 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 دریافت کنم پیغام میده به دلیل تحریم آی پی شما بلاک شده است 🙁
از قندشکن هم استفاده میکنم به شدت سرعت پایین میاد و عملا بعد از چند دقیقه متوقف میشه.
ممنون میشم اگه راهنمایی کنید چکار کنم
سلام
خود داکر رو باهاش صحبت کردن و گفته ممکنه تحریم هارو برداره ولی الان چندماهی هست که اینکارو نکرده.
فعلا روش خوبی برای اینکه بتونسد تحریم داکر رو دور بزنید نیست مگر اینکه اونو رو یه سرورمجازی توی کشور دیگه اجرا بکنید!
حالا اگه بتونید ایمیجی که روی سرورتون میگیرید رو دریافت کنید رو سیستم فک کنم مشکل رفع بشه.