mahsa sanaei
mahsa sanaei
خواندن ۴ دقیقه·۵ ماه پیش

معرفی داکر Docker

Docker
Docker

در پست قبلی در مورد معماری و نحوه نصب داکر صحبت کردیم.در این قسمت با نحوه کار و استفاده آن آشنا میشویم.

نحوه کار Docker:

داکر فایل (Dockerfile):

برای ساختن یک ایمیج، از فایل Dockerfile استفاده می‌کنید. این فایل شامل دستورات مورد نیاز برای ساخت ایمیج است. برای مثال، شما در این فایل می‌توانید مشخص کنید که ابتدا سیستم‌عاملی (مثلاً Ubuntu) نصب شود، سپس وابستگی‌های اپلیکیشن نصب شوند و در نهایت خود اپلیکیشن راه‌اندازی شود.

ساخت داکر فایل :

یک فایل متنی به نام Dockerfile ایجاد می‌کنید و دستورات ساخت ایمیج را در آن می‌نویسید. برای مثال:

FROM python:3.8-slim
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
CMD [&quotpython&quot, &quotapp.py&quot]

دستور FROM:

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

FROM ubuntu:20.04

این دستور از نسخه ۲۰.۰۴ سیستم‌عامل Ubuntu به عنوان ایمیج پایه استفاده می‌کند.

FROM node:14

ایمیجی که از Node.js نسخه ۱۴ استفاده می‌کند.

FROM python:3.10-alpine

ایمیجی از پایتون نسخه ۳.۱۰ که بر پایه‌ی سیستم‌عامل سبک Alpine ساخته شده است. ایمیج‌های Alpine کم‌حجم‌تر هستند.

دستور COPY :

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

COPY . /app

تمام فایل‌ها و دایرکتوری‌های پروژه را از محل فعلی (نقطه .) به داخل دایرکتوری /app در کانتینر کپی می‌کند.

COPY myfile.txt / app/myfile.txt

در اینجا فقط یک فایل خاص به مسیر در داخل ایمیج کپی می‌شود.

COPY ./src /app/src

تمام محتوای دایرکتوری src را به دایرکتوری /app/src در داخل ایمیج کپی می‌کند.

دستور WORKDIR:

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

WORKDIR /app

دایرکتوری کاری به /app تغییر داده می‌شود. این به این معناست که هر دستور بعدی که اجرا شود، در مسیر /app اتفاق می‌افتد.

دستور RUN

این دستور دستورات را در طول ساخت ایمیج اجرا می‌کند. این دستورات معمولاً برای نصب بسته‌ها، به‌روزرسانی سیستم، یا انجام تنظیمات استفاده می‌شود.

RUN apt-get update && apt-get install -y python3-pip

این دستور ابتدا سیستم‌عامل را به‌روزرسانی کرده و سپس بسته‌ی python3-pip را نصب می‌کند.

RUN npm install

اگر از Node.js استفاده می‌کنید، این دستور تمامی بسته‌های مشخص شده در فایل package.json را نصب می‌کند.

RUN pip install -r requirements.txt

این دستور نیازمندی ها را از فایل ذکر شده نصب می‌کند.

دستور CMD:

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

CMD [&quotpython&quot, &quotapp.py&quot]

این دستور زمانی که کانتینر اجرا می‌شود، اپلیکیشن app.py را با پایتون اجرا می‌کند.

CMD [&quotnode&quot, &quotserver.js&quot]

در اینجا، کانتینر در زمان اجرا فایل server.js را با Node.js اجرا می‌کند.

یک نکته ای وجود دارد که فقط یک CMD در Dockerfile می‌تواند وجود داشته باشد. اگر چندین CMD تعریف کنید، فقط آخرین آن‌ها اجرا خواهد شد.

دستور ENTRYPOINT:

به شما اجازه می‌دهد یک برنامه اصلی را برای اجرای کانتینر تعیین کنید که در هر صورت باید اجرا شود، حتی اگر آرگومان‌هایی به کانتینر ارسال شود.CMD و ENTRYPOINT شباهت‌هایی دارند، اما تفاوت این است که CMD به راحتی با آرگومان‌های جدید تغییر می‌کند، در حالی که ENTRYPOINT به عنوان بخش جدانشدنی از اجرای کانتینر در نظر گرفته می‌شود.

ENTRYPOINT [&quotpython&quot, &quotapp.py&quot]

در اینجا، کانتینر همیشه app.py را با پایتون اجرا می‌کند، حتی اگر آرگومان‌های دیگری به کانتینر داده شود.

دستور EXPOSE:

به Docker می‌گوید که کانتینر قرار است روی یک پورت خاص ارتباط برقرار کند. این دستور خودش به تنهایی پورت را باز نمی‌کند، اما به عنوان یک مستندسازی داخلی عمل می‌کند تا بگوید این پورت باید استفاده شود. در واقع به عنوان یک مستندات برای توسعه‌دهندگان و کاربران دیگر عمل می‌کند.

EXPOSE 5000

این دستور پورت ۵۰۰۰ را برای ارتباطات اپلیکیشن داخل کانتینر مستند می‌کند.

به خودی خود پورت‌ها را باز نمی‌کند. برای دسترسی به پورت‌های مشخص شده، باید هنگام اجرای کانتینر از گزینه -p یا --publish استفاده کنید.

EXPOSE 80

پورت 80 را برای ارتباط با کانتینر مستند می‌کند.


Docker
Docker

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

docker build -t image-1 .

و بعد پورت ۸۰ داخل کانتینر را به پورت ۸۰۸ روی میزبان متصل میکند:

docker run -p 8080:80 image-1

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

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

مشاهده لیست ایمیج‌های داکر:

docker images

مشاهده لیست کانتینرهای در حال اجرا:

docker ps

مشاهده لاگ‌های یک کانتینر:

docker logs <container_id>


dockerزبان برنامه‌نویسیداکرپایتونmlops
مهسا ثنایی هستم.مهندس کامپیوتر و فعال در حوزه جذاب هوش مصنوعی
شاید از این پست‌ها خوشتان بیاید