داکر ابزاری برای ایجاد ماشین های مجازی که به اصطلاح کانتینر گفته می شود است. کاربرد آن در بحث بهبود امنیت، بازتولید و مقیاس پذیری نرم افزار است. کانتیر می تواند شامل یک سیستم عامل بهمراه چندین سرویس دهنده باشد. کانتینرها به دلیل اینکه به صورت لایه ای ذخیر و باز یابی می شوند می تواند از کانتینرهای دیگر به ارث بروند. لایه رو می توانیم به دستورات خاص این نرم افزار تعبیر نماییم که تعداد آن با حجم خروجی کانتینر رابطه مستقیم دارد.
پلتفرمم داکر شامل موتور، رجیستری و فایل داکر است. فایل داکر وقتی توسط موتور داکر بیلد می شوند بعنوان ایمیج شناخته می شوند. هر فایل داکر می تواند به چندین صورت بنا به متغیرهایی که در آن تعریف می شود بیلد شود که با تگ از همدیگر متمایز می شوند. مجموعه ای از داکر فایل ها و بیلد های آن در ریپازیتوری داکر ذخیره و بازیابی می شوند. برای جستجوی آن ها از رجیستری استفاده می شود. بزرگترین رجیستری داکر، هاب داکر است. هر داکر کانتینر می تواند به بقیه داکر کانتینر ها یکسری سرویس بدهد. برای هماهنگ کردن بین این سرویس ها باید از محصول دیگری مثل داکر کامپوز، داکر سوارم و کوبرنیتیز استفاده کرد.
دستورالعملهای داکرفایل می تواند شامل مموارد ذیل باشد:
- FROM – یک ایمیج مبنا (والد) تعریف میکند.
- LABEL – متادیتا ارائه میکند و مکان مناسبی برای گنجاندن اطلاعات فراداده است.
- ENV – یک متغیر محیطی دائمی را تعیین میکند.
- RUN – یک دستور را اجرا میکند و یک لایه ایمیج ایجاد میکند. از آن برای نصب بستهها درون کانتینرها استفاده میشود.
- COPY – همه فایلها و دایرکتوریها را به کانتینر کپی میکند.
- ADD – فایلها و دایرکتوریها را به کانتینر کپی میکند و میتواند فایلهای محلی زیپ شده را از حالت فشرده خارج کند.
- CMD – یک دستور و آرگومانهایی برای یک کانتینر اجرایی ارائه میکند. پارامترها میتوانند لغو شوند. تنها یک دستور میتواند وجود داشته باشد.
- WORKDIR – دایرکتوری کاری برای دستورالعملهایی که در ادامه میآید تعیین میشود.
- ARG – یک متغیر تعریف میکند که در زمان ساخت به داکر ارسال میشود.
- ENTRYPOINT – یک دستور و آرگومانهایی برای یک کانتینر اجرایی ارائه میکند. آرگومانها دائمی هستند.
- EXPOSE – یک پورت را باز (افشا) میکند.
- VOLUME – یک نقطه نصب دایرکتوری تعیین میکند که به دادههای دائمی دسترسی دارد و آنها را ذخیره میکند. س در فرآیند بیلد ایمیج از قابلیت کش کردن برای هر فایل داکر استفاده می شود. کش کردن باعث افزایش سرعت بیلدهای بعدی آن فایل داکر می شود. درصورتیکه فایل داکر عوض شود اعتبار کش آن باطل می شود. به هنگام بیلد مجدد فایل داکر از خطی که تغییر صورت گرفته، دستورات بعدی دوباره اجرا می شوند. کاهش اندازه بیلد می تواند با خلاصه سازی دستورات داخل فایل داکر یا بیلدهای چند مرحله ای صورت بگیرد.
بحث حرفه ای در داکر وجود دارد که تحقیق آن بعهده خود شماست. DISTROLESS
دستورات عمومی داکر:
- docker version – اطلاعاتی در مورد کلاینت داکر و نسخههای سرور نمایش میدهد.
- docker login - وارد یک رجیستری داکر میشوید.
- docker system prune – همه کانتینرهای بیاستفاده، شبکههای استفاده نشده و ایمیجهای بیمصرف را حذف میکند.
دستورات ایمیج داکر تواند شامل مموارد ذیل باشد:
- build – یک ایمیج میسازد.
- push – یک ایمیج را به ریپازیتوری ریموت پوش میکند.
- ls – ایمیجها را فهرست میکند.
- history – اطلاعات ایمیج واسط را نمایش میدهد.
- inspect – اطلاعات زیادی در مورد یک ایمیج نمایش میدهد که شامل لایهها نیز میشود.
- rm – یک ایمیج را حذف میکند.
دستورات کانتینر داکر تواند شامل مموارد ذیل باشد:
- create – یک کانتینر را از روی ایمیج میسازد.
- start – یک کانتینر موجود را آغاز میکند.
- run – یک کانتینر را ایجاد کرده و آن را اجرا میکند.
- ls – کانتینرهای در حال اجرا را فهرست میکند.
- inspect – اطلاعات زیادی در مورد یک کانتینر ارائه میکند.
- logs - log-ها را نمایش میدهد.
- stop – کانتینر در حال اجرا را با ملایمت متوقف میکند.
- kill – پروسس اصلی کانتینر را اجباراً از بین میبرد.
- rm – یک کانتینر متوقف شده را حذف میکند.
داده ها در داکر به صورت ثابت ذخیره می شوند. داده ها در کانتینر به دو صورت موقت و ثابت نگهداری می شوند. داده های موقت در کانتینر بعد از حذف کانتینر از بین می روند. محل داده های ثابت در کانتینر بوسیله والوم معرفی می شود.
بحث در مورد ذخیره سازی در داکر به دو سوییچ ذیل است که تحقیق آن بعهده خود شماست.
- mount
- volume
https://blog.faradars.org/docker-tutorial-part-1/
https://blog.faradars.org/docker-tutorial-part-2/
https://blog.faradars.org/docker-tutorial-part-3/
https://blog.faradars.org/docker-tutorial-part-4/
https://blog.faradars.org/docker-tutorial-part-5/
https://blog.faradars.org/docker-tutorial-part-6/
https://www.docker.com/play-with-docker
$ DOCKER_BUILDKIT=0 docker build .