به نام خدا

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

بخاطر همین اولین تجربه من با داکر رقم خورد.

داکر از نظر من: یه برنامه که با نصبش توی خط فرمان میتونید یه سری برنامه هایی که بهشون میگیم image نصبش کنید (مثل mssql, centos, ubutno, etc..).

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

داکر رو از توی سایت اصلیش با دستور عملی که گفته شده روی سیستم عامل یا سرورتون نصب کنید. (از اینجا میتونید داکر رو دانلود کنید)

بعد از نصبش و استارت کردنش از توی ترمینال میتونید دستور docker رو بنویسید و اینتر کنید تا ببینید به درستی نصب شده.

دستورات داکر:

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

docker [option] [command] [arguments]

برای دیدن نسخه داکر از دستور docker info استفاده کنید

توجه کنید که [option] و [arguments] همیشگی نیستن و توی دستورات مختلفی ممکنه اصلا حضور نداشته باشند.

داکر ایمیج چیست؟

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

یعنی ممکنه شما یه برنامه رو بخواید روی دوتا کانتینر اجرا کنید پس یه بار ایمیج (برنامه) رو دانلود میکنید و روی دوتا کانتینر اجراش میکنید.

کانتنر چیست؟

یه محیطی که ایمیج ها روش اجرا میشن یعنی مثلا برای اینکه mssql رو نصب کنید باید ابتدا ایمیج mssql رو دانلود کنید بعد روی یه کانتینر اجراش کنید (میتونید برای اسون شدن کار با کانتینر براش اسم هم بزارید)

نکته: ایمیج ها همیشه توی محیط کانتینر ها اجرا میشن

 

چجوری یه ایمیج رو دانلود کنیم؟

برای اینکه یه ایمیج (برنامه) رو دانلود کنید باید حتما توی Docker Hub موجود باشه docker Hub یه ریپازیتوری از ایمیج هاست.

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

docker pull centos

دستور بالا سیستم عامل centos رو دانلود میکنه (یعنی بعد نصب و اجراش روی یه کانتینر میتونید تمامی دستوراتی که میشه روی centos اجرا کرد رو توی همین سیستم عامل فعلیتون توی ترمینال انجام بدید. فوق العاده است نه؟)

 

چجوری ایمیج دانلود شده رو روی یه کانتینر اجرا کنیم؟

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

docker --name myOS run centos

دستور بالا ایمیج centos رو توی یه کانتینر به اسم myOS میریزه (این اسم اختیاریه و میتونید اصلا نذارید اما برای اینکه بعدا دچار سردرگمی نشید بهتره براش یه اسمی بذارید)

حالا ایمیج مربوطه روی یه کانتینری که ایجاد شده نصب شد.

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

docker ps -a

وقتی دارید از دستور بالا استفاده میکنید فلگ -a به معنای نمایش همه کانیتر ها هست (چون بدون این فلگ، فقط کانینر های UP رو به شما نشون میده)

به طور پیشفرض وقتی شما چنین کانتینری رو ایجاد میکنید وضعیت کانتینر در حالت  UP (درحال اجرا) قرار میگیره و الان با دستور زیر میتونید وارد bash چیزی که نصب کردید بشید (که اینجا میشه سیستم عامل centos)

docker exec -it myOS "bash"

دونکته: ممکنه برای بعضی از کانتینر ها لازم باشه تا دستور sudo رو اول خط بالا قرار بدید.

نکته دوم اینکه اگه کانتینرتون روی حالت UP نباشه دستور بالا اجرا نمیشه و باید ابتدا از دستور زیر برای روشن کردن اون کانتینر استفاده کنید:

docker start myOS

و بعد برای اجرا از همون exec بالا استفاده کنید.

فلگ -it چیست؟ این فلگ برای زمانی است که میخواهید وارد bash دستور کانتینر مربوطه شوید.

حالا میتونید داخل bash مربوطه از هردستوری که دوست دارید استفاده کنید.

برای متوقف کردن کانتینر هم میتونید از دستور زیر بهره بگیرید

docker stop myOS

 

چگونه تمامی تغییرات و برنامه های نصب شده و کانفیگ های انجام شده در یک کانتینر رو ذخیره کنیم و به صورت ایمیج در بیاریم؟

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

docker commit -m "added mariadb-server" -a "Author Name" d2aa4d678a58 repository/centos-myos

حالا با دستور docker images میتونید ایمیج ها رو ببینید.

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

docker push docker-registry-username/docker-image-name

 

موفق باشید

یاعلی