dockerfile چیست و چگونه آن را بسازیم؟

در این مقاله به بررسی dockerfile و چگونگی ساختن آن می پردایم.

dockerfile چیست؟

dockerfile ها در واقع فایل های تنظیمات داکر میباشند که با استفاده ار آنها میتوانیم به داکر بگوییم که یک container را چگونه بالا بیاورد و آن را تنظیم کند. مثلا چه سرویس هایی روی ان بالا بیاید و چه پورت هایی را باز کند و چه اجازه دسترسی به آنها دهد.

در زیر جدولی آورده ایم که کلمات کلیدی مورد استفاده در این فایل را توضیح داده است.

توضیح

دستور مورد استفاده

مشخص کردن image مورد استفاده در Container

FROM

سازنده و توصیحاتContainer

MAINTAINER

اجرا کردن دستور هنگام ساخته شدن Container

RUN

اجرا کردن یک دستور بعد از ساخته شدن Container

CMD

اجرا کردن یک دستور بعد از ساخته شدن Container

ENTERYPOINT

اضافه کردن متادیتا به Container

LABEL

مشخص کردن پورت هایی که Container بعد بالا آمدن اجازه دسترسی به آن را می دهد

EXPOSE

اضافه کردن متغییرهای محلی به Container

ENV

اضافه یا کپی یا لینک کردن فایل یا دایرکتوری به Container

ADD

اضافه یا کپی فایل یا دایرکتوری به Container بدون لینک کردن

COPY

اضافه کردن یک mount point در ماشین میزبان یا Containerهای دیگر

VOLUME

ست کردن یک user یا UID در Container

USER

ست کردن دایرکتوری اجرایی در Container

WORKDIR

بعد از معرفی دستورات موجود در dockerfile نوبت به آموزش ساختن آن و چگونگی اجرای ان میرسد.

در اینجا  ما با مثالی درک این موضوع را برای شما آسان تر میکنیم .

در مثال ما میخواهیم یک container ایجاد کنیم که روی آن سرویس httpd بالا بیاید و همچنین یک فایل index.html در آن باشد و پورت httpd شماره ۸۰ باشد.

برای این منظور ابتدا یک فایل ایجاد میکنیم

vi nowlearn.ir-container

سپس اطلاعاتی مانند زیر را در ان کپی می کنیم

FROM centos
MAINTAINER nowlearn <admin@nowlearn.ir>
RUN yum -y install httpd
RUN echo “Hello DockerFile” > /var/www/html/index.html
EXPOSE 80
CMD [“-D”, “FOREGROUND”]
ENTRYPOINT [“/usr/sbin/httpd”]

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

سپس برای بالا آوردن Container دستوری مانند زیر را اجرا میکنیم

 docker build -t web_server:latest .

نکته: توجه کنید که باید در دایرکتوری که dockerfile خود را ساختیم باشیم تا عملیات با موفقیت انجام شود.

در صورتی که همه کارها را درست انجام داده باشیم خروجی مانند زیر میبینیم

Sending build context to Docker daemon 10.24 kB
Step 0 : FROM centos
—> 7322fbe74aa5
Step 1 : MAINTAINER nowlearn <admin@nowlearn.ir>
—> Running in fa5364b3d41f
—> 57d8fd36b7f7
…..
…..
Removing intermediate container 3efa8e1dcae9
Successfully built 7c39aaa338b4

حالا اگر ما docker image بگیریم باید خروجی مانند زیر ببینیم

REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
web_server latest 7c39aaa338b4 24 seconds ago 283.9 MB
docker.io/centos latest ce20c473cd8a 8 weeks ago 172.3 MB

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

curl http://localhost/

اگر خروجی مانند زیر دیدید کارهای انجام شده درست بوده است

Hello DockerFile

نکته: در دفعه های بعدی برای اینکه containerی که ساختیم سریع بالا بیاوریم بصورت زیر عمل میکنیم

docker run -d -p 80:80 web_server

در ضمن شما میتوانید برای دیدن لیست کامل آموزش های مربوط به docker به اینجا مراجعه کنید.

برای خواندن آموزش docker registry به صفحه مربوط به آن بروید.

1 دیدگاه در n “dockerfile چیست و چگونه آن را بسازیم؟

  • عالی و سپاس
    لطفا بیشتر در مورد یخزنثق بهمث و Yaml کاربرد های آن توضیح دهید
    با تشکر

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

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