کدباز

داکر چیست؟ – مروری بر داکر

داکر چیست؟

Docker یک فناوری ساخته شده بر روی Linux Containers (LXC) است که به هسته لینوکس اضافه می شود.

Docker اساساً یک موتور کانتینر دار است که از ویژگی های هسته لینوکس برای ساخت کانتینرها روی سیستم عامل و توزیع خودکار برنامه در ظرف استفاده می کند.
Docker از آنجا که روی هسته linux کار می کند ، به یک سیستم عامل مبتنی بر linux نیاز دارد. اگر docker را روی Mac و Windows نصب کنید ، docker یک سرور مجازی راه اندازی کرده و خود را بر روی آن اجرا می کند. به همین دلیل نمی توانیم به برخی از پرونده ها در docker دسترسی پیدا کنیم. با این حال ، هنگام تولید با لینوکس در تولید ، 100٪ کنترل docker را داریم.

چرا داکر؟

داکر چیست

برخلاف ماشین مجازی Docker ، به جای ایجاد یک سیستم عامل کامل مجازی ، به شما این امکان را می دهد تا با به اشتراک گذاری هسته linux از سیستم به صورت جداگانه استفاده کند.
اجرای یک سیستم بدون داکر واقعاً خسته کننده است ، اما اکنون می توانید این کار را در چند ثانیه با docker انجام دهید.

راه اندازی سریع: https://docs.docker.com/get-docker/

برای درک داکر ، ابتدا نگاهی می اندازیم به ساختار کلی آن.
Image نسخه بسته بندی شده برنامه هایی است که می خواهیم اجرا کنیم.
کانتینرها مناطقی هستند که می توانیم Image بسته بندی شده را اجرا کنیم.
Dockerfile فایل پیکربندی است که ما برای تولید Image از پروژه شما که در محلی شما قرار دارد استفاده خواهیم کرد.
رجیستری Docker محل ذخیره Image Docker است. Docker به طور پیش فرض برای جستجوی Image در Docker Hub پیکربندی شده است. این مخزنی است که Image Docker در آن به اشتراک گذاشته می شود. این مخزن Image hub.docker.com است.

موتور docker روی هسته لینوکس کار می کند.
docker-machine برای ایجاد و مدیریت چندین میزبان استفاده می شود. به عبارت دیگر ، برای نصب “Docker Engine” روی یک یا چند سیستم استفاده می شود.
docker-daemon بر اساس منطق ساختار lxc در هسته لینوکس کار می کند. هدف آن فراهم آوردن محیط لازم برای کار کانتینرها جدا از یکدیگر است.
Docker-client & Docker-server از ساختار سرویس دهنده-سرور Docker استفاده می کند. به عبارت دیگر ، سمت سرویس گیرنده میزبان شخصی شما و طرف سرور میزبان محل کار docker است. در Mac و Windows ، docker با نصب لینوکس مخصوص خود روی لینوکس مجازی اجرا می شود. بنابراین باعث ایجاد سرور می شود. ما به مشتری می گوییم کدام ظرف را باید ایجاد کند و چگونه باید باشد. بنابراین ساختار کلی به این شکل است.

داکر چیست؟

بنابراین اگر از آنچه تاکنون گفته ایم نتیجه بگیریم ،

  • داکر با لینوکس اجرا می شود.
  • بر روی ساختار LXC اجرا می شود. به لطف این ساختار ،
  • ما می توانیم ظروف ، سیستمهایی را که از یکدیگر جدا شده اند ایجاد کنیم و Image مورد نظر خود را در آنها اجرا کنیم.

سپس از ساختار سرویس دهنده سرور docker استفاده می کند. رابط docker سمت مشتری نشان دهنده محل نصب آن است. سرور Docker نشان دهنده demer docker است که با linux lxc در حال اجرا است. ما یک کانتینر از سرویس گیرنده Docker ایجاد می کنیم و تنظیمات استفاده از کانتینر و غیره را روی ظرفی که ایجاد کردیم تنظیم می کنیم.

linux lxc

داکر با لینوکس

استفاده از دستور Docker

نکته: از ظرف منظور همان Container و از ثصویر Image  می باشد.

docker <management-commands> <sub-command> [options]

دستور docker به 3 ساختار اصلی تقسیم می شود.

Mananer Commands

  • docker container
  • docker image
  • docker network
  • docker node
  • docker secret
  • docker service
  • docker stack
  • docker swarm
  • docker volume
  • version

Sub Commands

  • build
  • commit
  • create
  • exec
  • images
  • inspect
  • login
  • logout
  • logs
  • port
  • ls
  • ps
  • pull
  • push
  • rm
  • run
  • search
  • start
  • stop
  • stats
  • tag
  • top
  • update

Options — Parameter

  • -c, — context
  • -H, — host
  • -v, — version

کدهای بالا توسط خودم به عنوان کدهای مکرر نوشته شده اند. با این وجود تعداد بیشتری فرامین فرعی در docker وجود دارد. در صورت تمایل می توانید به صفحه اسناد docker بروید و موارد بیشتر را بررسی کنید.
بیایید  با این کدها شروع کنیم دوستان.

docker pull <image name>

 image بارگیری شده در hock docker را در docker محلی خود بارگیری می کنیم.
ما می توانیم image محلی را با

docker images 
//or
 docker image ls

 

بررسی کنیم.
با استفاده از

docker container run <imageName>

ظرف را برداشته و تصویری را که در آن مشخص کرده ایم بارگیری و اجرا می کنیم.
ظرف

docker container create <imageName>

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

docker container start <containerName>

وارد می کنیم.

ما می توانیم به ترمینال nginxContainer در حال اجرا با

docker container exec -it nginxContainer /bin/bash

متصل شویم. اگر / bin / bash است ، ما می خواهیم سیستم linux موجود در ظرف ما ، bash را باز کند.
توجه: -it پارامتر ، – تعاملی است ،

 interactive , -i- را باز نگه دارید حتی اگر کانتینر متصل نباشد تا بتوانم داده ها را در محفظه پخش کنم.

 tty، -t- ما را به ترمینال سیستم کانتینر جهت اتصال متصل می کند. به عبارت دیگر ، ما را از یک ترمینال به ترمینال موجود در ظرف متصل می کند و به ما امکان پردازش می دهد.

docker container run — detach — network dede -e MONGO_INITDB_USERNAME=dede -e MONGO_INITDB_PASSWORD=kek — name mongo -v ‘pwd’:/data/db -p 07907:27017 mongo:latest

دستور بالا پارامترهای استفاده شده هنگام ایجاد ظرف را نشان می دهد.

نکته مهم: در نسخه های قدیمی Docker ، ما قادر به نصب کانتینر با

docker run <imageName>

بودیم ، اما اکنون سیستم پیشنهادی اجرای docker container است.

برای توضیح پارامترهای موجود در تصویر بالا ،
با detach -d ، می خواهیم ظرف در پس زمینه اجرا شود.
با Name ، یک نام برای کانتینر تعیین می کنیم.
با استفاده از Network ، کانتینر را به شبکه خاصی متصل می کنیم.
ما می توانیم متغیرها را با env -e مشخص کنیم.
با استفاده از volume -v ، ما پوشه خاصی را در محفظه به پوشه محلی خود متصل می کنیم. به این فرآیند bind گفته می شود.
با Publish -p به ما امکان می دهد پورت برنامه را در محفظه گرفته و به درگاهی که می خواهیم به میزبان متصل کنیم. سمت چپ پورت سیستم است که در آن داکر اجرا می شود. شماره سمت راست تصویر کار شده در محفظه بارگذر ، درگاه برنامه است.
ما کانتینرهای خود را که با lock docker container کار می کنند لیست می کنیم.
ظرف

docker container rm -f <containerName>

از ظرف مشخص شده برداشته می شود.

docker container pause | docker container unpause <containerName>

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

docker container inspect <containerName>

دریافت می کنیم.

docker container logs <containerName>

لاگ های مربوط به کانتینر را نشان دهید.
این نشان می دهد ظرفی که ما با ظرف

docker container top <containerName>

ایجاد کرده ایم ، در حین کار چه کاری انجام می دهد.

Docker Volume چیست؟

کانتینرها بر روی حوضچه ها بدون حالت کار می کنند. بنابراین آنها بدون نگه داشتن اطلاعات وضعیت کار می کنند. به محض پاک شدن ظرف ، همه چیز موجود در آن از بین می رود.
با این حال ، این منطق در برنامه ها برای ما مناسب نیست. ما ممکن است داده های مداوم یا سایر الزامات مانند پرونده های پیکربندی داشته باشیم. به همین دلیل استفاده از ویژگی docker volume برای نگه داشتن اطلاعات در docker ضروری است.
Docker با پارامتر -v به کانتینرها متصل می شود.
با

docker volume create nginx-db

، ما یک حجم ، یعنی یک مخزن ایجاد کردیم.
با

docker volume inspect <volumeName>

، می توانیم ببینیم که حجم در کدام شاخه نگهداری می شود. (این متن فقط برای Linux معتبر است. دسترسی به لینوکس امکان پذیر نیست زیرا در سرور مجازی Mac و Windows در حال اجرا هستند.)

docker container run -d -name nginxContainer -v nginx-db:/usr/share/nginx/html -p 80:80 nginx

volume را که با nginx-db ایجاد کرده ایم به رشته ای که تصویری که در این ظرف اجرا می کنیم بارگذاری می شود ، یعنی اجرا می شود.
حتی اگر ظرفی به نام nginxContainer را با دستور بالا برداریم ، داده های ما با حجم docker با نام nginx-db ذخیره می شوند.
بیایید به کانتینری که با

docker container exec -it tnginxcontainer / bin / bash

جمع کردیم متصل شویم و مستقیماً به فهرست cd / usr / share / nginx / html برویم و vim index.html را باز کنیم با نصب apt update – apt install vim and make با توجه به سرور شما تغییر می کند.
سپس اجازه دهید آن را برای تغییرات در localhost بررسی کنیم.
سپس محفظه را به عنوان docker container rm -f nginxContainer پاک کنید ، سپس مجدداً ظرف را بال بیاریده و مشاهده کنید که داده ها همچنان ثابت هستند.
به این روش که توضیح دادم روش volume گفته می شود.
یک روش صحافی نیز وجود دارد. این منطق کمک می کند تا داده ها در یک پوشه بر روی میزبان شما باشد ، نه در docker. به عبارت دیگر ، با linux در docker ، پوشه را بر روی سیستم خود متصل می کند و می توان به صورت دو طرفه به آن دسترسی داشت.

docker container run -d -name nginxContainer -v ’pwd/nginx-local-db’:/usr/share/nginx/html -p 80:80 nginx

من با دستور pwd دایرکتوری محل اجرای کانتینر docker را اجرا می کنم. اگر می خواهید ، می توانید آن را جایی
docker volume ls

Volume  ها را لیست می کند

docker volume inspect <volumeName>

اطلاعاتی را درباره Volume ارائه می دهد.

docker volume rm <volumeName>

Volume را پاک می کند
docker volume prune کلیه Volume ها را پاک می کند
با

docker run -d -it — name nginx -v nginx-db:/var/www:ro nginx:latest

به عبارت دیگر ، ما می توانیم داده ها را از Volume بخوانیم ، اما نمی توانیم آنها را بنویسیم.

توجه: تصاویر ایجاد شده در Docer.hub ممکن است دارای VOLUME باشد. اگر با بازرسی کانتینر به شی object Mounts بروید ، می توانیم Volume  تصویر مشخص شده را ببینیم. با این حال ، ما همچنین می توانیم این دستگاه را به دستگاهی تبدیل کنیم که فقط دارای سیستم عامل لینوکس باشد. از آنجا که ویندوز و macOS میزبان مجازی هستند ، نمی توان به فهرست مشخص شده دسترسی داشت.

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

منو

شبکه های اجتماعی