جستجو در بخش : سوال جواب منابع اسلامی لغت نامه ها قوانین و مصوبات نقل قل ها
×

فرم ورود

ورود با گوگل ورود با گوگل ورود با تلگرام ورود با تلگرام
رمز عبور را فراموش کرده ام عضو نیستم، می خواهم عضو شوم
×

×

آدرس بخش انتخاب شده


جهت کپی کردن میتوانید از دکمه های Ctrl + C استفاده کنید
رویداد ها - امتیازات
در حال بارگذاری
×

رویداد ها - امتیازات

برای بررسی عملکرد فعالیت و امتیازات خود باید در وب سایت وارد باشید. در صورت عضویت از بخش بالای صفحه وارد شوید، در غیر این صورت از دکمه پایین، مستقیم به صفحه ثبت نام وارد شوید.

×
×
×

دلیل درخواست بستن پست

کلیه پست هایی که جنبه تبلیغاتی داشته، محتوای اسپم و بی مفهوم در این دسته قرار میگیرند. همچنین پست هایی که به منظور گرفتن بک لینک درج می شوند شامل این مورد هستند.
حاوی مفاهیم غیر اخلاقی، سیاسی و یا توهین آمیز. کلیه پست هایی که از نظر محتوایی نیاز به بررسی و یا حذف شدن دارند در این دسته قرار می گیرند.
محتوایی با عدم جزئیات کافی و مورد نیاز. کلیه پست هایی که منظور نویسنده به وضوح مشخص نیست و نیازمند توضیحات و جزئیات بیشتر می باشند در این دسته قرار می گیرند.
محتوایی بی ربط با موضوعیت سرفصل کلی. کلیه پست هایی که از منظر مفهوم و مضمون ارتباطی با عنوان اصلی سوال ندارند در این دسته قرار می گیرند.
محتوایی دلخواه و بر پایه سلیقه. کلیه پست هایی که یک پاسخ مشخص ندارند و متوانند چندین پاسخ متفاوت و صحیح داشته باشند که کاملا مبتنی بر نظر شخصی افراد هستند در این دسته قرار می گیرند.
محتوایی در حوزه خیلی وسیع. کلیه پست هایی که از نظر محتوایی در یک حوزه ی وسیعی قرار دارند و مشخصا به یک موضوع خاصی اشاره ندارند که پاسخدهی به آن ها مستلزم تشریح مفاهیمی کلی می باشند در این دسته قرار می گیرند.
قبلا در لام تا کام مطرح شده. پست هایی که دقیقا با همین محتوا و مضمون قبلا در وب سایت لام تا کام درج شده اند، با ذکر آدرس منبع تکراری با پست حال حاضر شامل این دسته هستند. تکراری است با:
به سایر دلایل، نیازمند به بررسی توسط مدیر. به هر دلیل غیری که پست را نیازمند بررسی توسط مدیر کرده، با ذکر دلیل، در این دسته قرار میگیرد.
ارسال رای بستن

داکر چیست و چگونه کار می کند؟


8
1
7254

با سلام خدمت دوستان عزیز

داکر چیست؟

چندین باره که دارم توی آگهی های استخدام برای وب مسترها یا حتی سرور کارها «داشتن تجربه کار با داکر». من مقداری سرچ کردم و احساس کردم که یک سیستم عامل هست؟ درسته؟ بعد چه فرقی مثلا با لینوکس داره؟ آخه دیده بودم نوشته بود نرم افزارهای یک پروژه روی داکر نصب میشن و حس کردم که یک سیستم عامل باید باشه. ممنون میشم یه مقدار توضیح بدید در این باره.

داکر چگونه کار می کند؟

یکی دیگه از جنبه های سوالم اینه که داکر به چه صورتی کار می کنه؟ یا به عبارت بهتر «چگونه میشه از داکر استفاده کرد؟» آیا یک محیط گرافیکی براش جود داره؟ مثلا واسه لینوکس یک سری تم گرافیکی هم داره که علاوه بر محیط CI میشه از اون هم استفاده کرد آیا داکر هم داره همچین چیزی؟! کلا به صورت کاربردی چطوری میشه از داکر کار گرفت؟

علمی برنامه-نویسی سیستم-عامل کامپیوتر
سوال شده در سجاد شفی زاده <m>★</m>
11.1k امتیاز

500 کاراکتر باقی مانده

3 جواب

5

داکر چیست؟ چگونه کار می کند؟ چه کاربردی دارد؟ نحوه استفاده آن چگونه است؟

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

داکر


داکر چیست؟

در واقع داکر (Docker) یک پلتفرم متن باز است که مبتنی بر سیستم‌عامل لینوکس راه‌اندازی شده است؛ و بر روی سایت سیستم عامل های مطرح جهان نیز کار می کند.

داکر چگونه کار می کند؟

بر روی سخت افزار خب یک سیستم عامل نصب میشه (مثلا لینوکس، ویندوز و ...)؛ بعد داکر مستقیم بر روی سیستم عامل نصب میشه، و از اون موقع به بعد شما داکر رو تقسیم بندی میکنی و هر بخشش رو واسه یه پروژه مجزا اختصاص میدی. پس این لایه ها رو داریم:

Infrastructure > Operation System > Docker > Container > App A

Infrastructure > Operation System > Docker > Container > App B

Infrastructure > Operation System > Docker > Container > App C 

...

معماری داکر

داکر چه کاربردی دارد؟

اصلی ترین هدف داکر ساخت و ایجاد یک فضای ایزوله برای اپلیکیشن هایی هست که داریم؛ تا بتونیم به صورت مستقل از هم اجراشون کنیم و برای هر اپلیکیشن تمام وابستگی هاشو (dependencies) کنارش نصب کنیم؛ که خب این باعث میشه اپلیکیشن (کلا پروژه ما) یک ماژول (که توی داکر بهش می گن container) مجزا که خب یعنی یک اپلیکیشن قابل حمل بر روی هر سرور و کامپیوتر دیگه بدون نصب دوباره هیچ چیزی؛ چرا که تمام نیازمندی های پروژه توی container یکبار نصب شدن.

مثال: شما یک وب سایت طراحی کردی، وقتی می بری روی سرور، باید php رو نصب کنی، mysql یا sqlserver یا هر دیتابیس دیگه ای رو برای پروژه نصب کنی، کلی افزونه نیاز هست که باید نصب کنی و ... !

در صورتی که تو می تونی پروژت رو تویه یک container در بستر داکر docker قرار بدی و از اون موقع به بعد اون container رو هرجایی که می خوای ببری و دیگه بدون نصب هیچ چیزی اجراش کنی؛ شایان ذکره که خیلی از پروژه ها روی ورژن های خاصی از مثلا php کار می کنن که در این صورت باز هم داکر فوق العادس که همون ورژن رو یک بار نصب می کنی و هیچوقت مشکل آپدیت شدن ورژن جدید حین نصب (که منجر میشه که عدم اجرا شدن پروژه) رو نخواهید داشت.

فرق داکر با سایر مجازی سازها

یکی از مجازی سازهایی که معمولا داکر رو باهاش مقایسه می کنن VMware هستش که خب اونم یک نرم افزار مجازی سازه سخت افزار رو تقسیم می کنه و میشه روش پروژه های متفاوتی رو به صورت جداگانه بالا آورد. خب به طور کلی اره میشه گفت مشابه هست خروجی کارشون. ولی، معماری VMware متفاوته؛ یعنی میاد در لایه ی سخت افزار میشینه و اون رو چندین بخش می کنه، بعد روی هر کدوم از بخش ها سیستم عامل جداگانه و مختص به خودش رو نصب می کنه و بعد هم پروژه رو گانفیگ میکنه و نهایتا پروژه بالا میاد.

در صورتی که داکر روی لایه ی سیستم عامل میشینه؛ یعنی سخت افزار اختصاص داده شده، سیستم عامل یک بار نصب شده، و بعد ما میایم یک سری container میسازیم و پروژه هامون رو بالا میاریم. این تصویری هست از معماری VMware:

معماری مجازی وی ام ویر

و این هم یک تصویر مقایسه ای از داکر و سایر مجازی سازها:

مقایسه داکر و سایر مجازی سازها

سه مفهوم اصلی در داکر:

- Image

Image‌ها را در داکر پس از دریافت اجرا می‌کنیم. همانطور که در تصویر پایین می‌بینید یک Base Image مانند Debian روی این داکر نصب شده است و روی آن Image‌های دیگر را نصب کرده ایم.

در واقع Image‌ها پس از پایان به حالت اولیه خود باز می‌گردند چرا که همانطور از نام آن‌ها مشخص است تنها یک تصویری از پکیج اصلی هستند. برای حذف تغییرات Image می‌توان حالت آن‌ها را با دستورات خاصی ذخیره کرد.

توضیح تصویر

- Hub

هاب یک سرویس اشتراک گذاری تهیه شده توسط خود شرکت Docker است که شامل مخزنی از image‌های آماده برای Docker است. این مخزن حاوی چندین هزار برنامه و سیستم عامل است که می‌توان به آن image‌هایی را هم اضافه کرد.

- Container

همانطور که پیش تر هم به صورت خلاصه در رابطه با کانتینرها گفته شد، می‌توان گفت Container ظرفی است که Image‌ها را در آن اجرا می‌کنند. Container‌ها از روی Image‌ها ایجاد می‌شوند و به وظایف خود عمل می‌کنند. به عنوان مثال تصور کنید از یک Centos چند Container می‌سازیم و در هر کدام تغییرات متفاوتی اعمال می‌کنیم.

کانتینر در داکر

چگونه داکر را نصب و از آن استفاده کرد؟

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

docker --version

// Docker version 17.12.0-ce, build c97c6d6

شایان ذکره که حتی می تونید با کامند docker info جزئیات بیشتری هم ببینید. خب، بعد از اون یک تست می گیریم از داکر؛ این کامند رو اجرا کنید: (داریم با ایمیج hello-world تست میگیریم)

docker run hello-world

که یک همچین خروجی رو باید بگیرید:

// Unable to find image 'hello-world:latest' locally
// latest: Pulling from library/hello-world
// ca4f61b1923c: Pull complete
// Digest: sha256:ca0eeb6fb05351dfc8759c20733c91def84cb8007aa89a5bf606bc8b315b9fc7
// Status: Downloaded newer image for hello-world:latest
// Hello from Docker!   
// This message shows that your installation appears to be working correctly.

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

docker image ls

اینطوری هم میتونید لیست تمام کانتینرها رو ببینید (که الان توسط ایمیج برای ما ساخته شده):

docker container ls --all

این ها هم یه سری ترفند و خلاصه ای از کامندهای مشابه و (شاید) مورد نیازتون باشه:

## List Docker CLI commands
docker
docker container --help

## Display Docker version and info
docker --version
docker version
docker info

## Execute Docker image
docker run hello-world

## List Docker images
docker image ls

## List Docker containers (running, all, all in quiet mode)
docker container ls
docker container ls --all
docker container ls -aq

خب یه شروع سریع؛ اجرا میکنیم پکیجی رو که دانلود کردیم:

docker run hello-world

خب وقتش رسیده که بریم سراغ Dockerfile؛ (در واقع تعریف میکنه که توی محیط کانیتینر چه خبره). که خب از اینجا به بعد رو خیلی خوبه که برید سراغ داکیومنتیشن اصلیش و اونو دنبال کنید؛ چرا که خیلی دقیق و تمیز تشریح کرده.


این هم یک ویدیوی تصویری با موضوعیت «داکر چیست» و «چگونه آن را بر روی سیستم عامل ویندوز نصب کنیم». امیدوارم که بدردتون بخوره:

موفق باشید.

ویرایش شده در 4 سال قبل
جواب داده شده در سجاد شفی زاده <m>★</m>
11.1k امتیاز


ممنون از توضیحات جامع و عالی شما. ــ ساناز رضایی در 5 سال قبل

@ساناز.رضایی خواهش ميكنم. مجددا هم ميگم كه داكيومنتيشن خود سايت داكر خيلي خوب و با جزئيات تشريح كرده روند كار با داكر رو؛ اگه يه نگاهي بهش بندازيد خالي از لطف نيست. ــ سجاد شفی زاده در 5 سال قبل

500 کاراکتر باقی مانده


5

داكر چیست ؟ داكر در واقع یك نرم افزار هست كه‌ روی اكثر سیستم عامل های شناخته‌ شده‌ كار میكند. این نرم افزار با مجازی سازی، لایه‌ هایی روی سیستم عامل ایجاد میكند كه‌ با بهره‌ گیری از هسته‌ ی سیستم عامل میتواند محیط ایزوله‌ ای رو ایجاد كند كه‌ تمامی نرم افزارها روی ان اجرا شود.

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

فایلی كه‌ با استفاده‌ از آن كانتینر ایجاد میشوند ایمیج نام دارد. داكر روی وب یك هاب ( كه‌ یك ریپازیوری هست ) ایجاد كرده‌ است كه‌ ایمیج ها را در آن نگهداری میكند. روی هاب مانند سیستم گیت میتواند pull كرد و یا یك ایمیج رو كامیت كرد.

این انعطاف پذیری قدرت زیادی رو به‌ داكر و استفاده‌ كنندگان آن میدهد. به‌ طوری كه‌ میتوان هر محیطی رو شخصی سازی كرد و روی هاب كامیت كرد و بعدا استفاده‌ كنیم.

داكر از مفهوم مجازی سازی استفاده‌ میكند كه‌ خود این مفهوم مقوله‌ ی تازه‌ ای نیست و قبلا نرم افزارهای مانند vmware، در این عرصه‌ كارهای بسیاری را انجام داده‌ اند. ولی تفاوتی كه‌ داكر رو در میان كاربران بسیار محبوب كرده‌ است ساده‌ و سبك و انعطاف آن میباشد.

داکر چگونه کار می کند؟ داكر اساسا CI ( خط فرمان ) میباشد. روی هر سیستم عاملی با نصب و انجام چند دستور، داكر آماده‌ به‌ كار میشود. نرم افزارهای غیر رسمی و جزیی برای نشان دادن وضعیت اجرای داكر و باز بسته‌ كردن ان وجود دارد كه‌ معمولا ضرورتی برای استفاده‌ از آن وجود ندارد.

یكی از مثال های استفاده‌ از آن، اجرای چند وبسایت وردپرس روی سرور لینوكس میباشد. برای این كار اول داكر رو روی سرور لینوكس اجرا میكنیم. بعدا ایمیج وردپرس داكر رو از روی داكر هاب pull میكنیم پس از ان یك كانتینر از ایمیج دانلود شده‌ ایجاد میكنیم. این كانتینر مانند یك سرور لیكنوكس كاملا مستقل عمل میكند كه‌ میتوان وبسایت خود رو روی ان اجرا كرد. برای وبسایت های تنها كافیست كه‌ كه‌ كانتینر جدیدی از ایمیج دانلود شده‌ ایجاد كنیم. تنها با یك دستور و محیط جدید در كسری از ثانیه‌ ایجاد میشود.

جواب داده شده در فخرالدین عبدی
126 امتیاز


ببينيد همانطور كه گفتيد من يك كانتينر ايجاد كردم و وب سايتم رو به همراه تمام نياز منديهاش روش نصب كردم الان سوالم اينه چطوري ميتونم ازش يك ايميج تهيه كنم كه بعدها روي هر سروري در كسري از ثانيه بتونم انتقالش بدم؟ ميشه راهنمايي كنيد لطفا ــ ساناز رضایی در 5 سال قبل
2
@ساناز.رضایی قبل از اینکه چیزی نصب کنی اول باید یه ایمیل image خالی بسازی، بعد روی اون هیچی که می خوای نصب کنی و نهایتا وب سایتت رو بالا ببری .. با دستور mkdir ~/myimages توی خانه یه فولدر بساز، بعد با cd myimages/ برو توی اون فولدر و نهایتا یه فایل بساز touch Dockerfile. حالا می تونی این فایل رو ویرایش کنی (vim Dockerfile) و هرچی که می خوای توی بنویسی. مثلا خط اولش می تونه این باشه FROM ubuntu:16.04، یعنی می خوای از این سیستم عامل استفاده کنی. و خط بعد هم RUN apt-get update و .. ــ سعید مرادی در 5 سال قبل
1
توی کامنت قبل نظورم ایمیج (image) خالی بود. اشتباه تایپی هست. ــ سعید مرادی در 5 سال قبل

500 کاراکتر باقی مانده


3

ساخت پروژه خود در داکر

داکر

اگر شما بخواهید شروع به نوشتن پروژه خود در یک زبان کنید. به طور مثال در پایتون (Python)

در اولین قدم شما نیاز دارید محیط برنامه نویسی پایتون (Python) را در کامپیوتر خود فراهم کنید .

مانند نصب پایتون (Python) و ...

داکر (Docker) برای شما شرایطی را محیا می کنید که تمام پروژه خود را داخل یک داکر ایمیج (Docker Image) که قابل حمل است داشته باشید.

این داکر ایمیج ها (Docker Images) توسط صدا کردن فایلی به نام داکر فایل (Docker File) ساخته می شوند.

داکر فایل (Docker File)

در داکر فایل (Docker File) آنچه پروژه شما به آن نیاز دارد را تعریف میکنیم.

در این محیط مجازی دسترسی به منابع سیستم از بقیه سیستم جدا شده است. پس باید پورت 80 پروژه برای اتصال از بیرون آماده باشد.

مزیت استفاده :

با استفاده از این سیستم می توانید پروژه خود را در هر کجا اجرا کنید.

چگونه یک داکر فایل (Docker File) بسازیم؟

یک پوشه می سازیم و به داخل آن (cd) آن رفته و فایل به نام DockerFile می سازیم.

دقت کنید که دقیقا نام این فایل DockerFile باشد نه DockerFile.txt و ...

# Use an official Python runtime as a parent image
FROM python:2.7-slim

# Set the working directory to /app
WORKDIR /app

# Copy the current directory contents into the container at /app
COPY . /app

# Install any needed packages specified in requirements.txt
RUN pip install --trusted-host pypi.python.org -r requirements.txt

# Make port 80 available to the world outside this container
EXPOSE 80

# Define environment variable
ENV NAME World

# Run app.py when the container launches
CMD ["python", "app.py"]

پروژه را می نویسیم

دو فایل دیگر با نام های requirements.txt و app.py در همان پوشه ایجاد می کنیم.

requirements.txt

Flask
Redis

app.py

from flask import Flask
from redis import Redis, RedisError
import os
import socket

redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)

app = Flask(__name__)

@app.route("/")
def hello():
    try:
        visits = redis.incr("counter")
    except RedisError:
        visits = "<i>cannot connect to Redis, counter disabled</i>"

    html = "<h3>Hello {name}!</h3>" \
           "<b>Hostname:</b> {hostname}<br/>" \
           "<b>Visits:</b> {visits}"
    return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits)

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=80)

همانطور که متوجه شدید ما پکیج های لازم را در requirements.txt تعریف کردیم و بعد از نصب الزامات در داکر فایل (Docker File) این فایل صدا زده و پکیج های ذکر شده در آن را در پروژه نصب می کند.

پروژه را می سازیم

در پوشه ای که بودیم دستور ls را وارد میکنیم تا محتویات پوشه را ببینم .

$ ls

محتویات باید به صورت زیر باشد.

Dockerfile      app.py          requirements.txt

دستور زیر را اجرا می کنیم تا داکر ایمیج (Docker Image) خود را بسازیم.

docker build --tag=friendlyhello .

یا

docker build -t=friendlyhello .

با tag=friendlyhello:v0.0.1 این روش نوشتن در دستور بالا می توانیم ورژن نرم افزار خود را مشخص کنیم.

دستور زیر را می زنیم تا داکر ایمیج های (Docker Images) خود را ببینیم.

$ docker image ls

خروجی :

REPOSITORY            TAG                 IMAGE ID
friendlyhello         latest              326387cea398

همانطور که مشاهده می کنید داکر ایمیج (Docker Image) ما ساخته شده است.

با دستور زیر پروژه خود را اجرا می کنیم.

docker run -p 4000:80 friendlyhello

حالا میتوانیم در مرورگر خود پروژه را ببینیم با ادرس http://localhost:4000

پروژه در مرورگر

اشتراک گذاری داکر امیج (Docker Image)

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

بعد از ساخت اکانت دستور زیر را میزنیم.

$ docker login

نیاز به علامت گذاری داکر امیج (Docker Image) خود داریم به صورت زیر

$ docker tag image username/repository:tag

برای مثال

$ docker tag friendlyhello gordon/get-started:part2

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

$ docker image ls

خروجی :

REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
friendlyhello            latest              d9e555c53008        3 minutes ago       195MB
gordon/get-started         part2               d9e555c53008        3 minutes ago       195MB
python                   2.7-slim            1c7128a655f6        5 days ago          183MB
...

آپلود ایمیج

$ docker push username/repository:tag

اگر وارد اکانت خود در سایت داکر هاب شوید متوجه خواهید شد که پروژه شما در آن آپلود شده است

موفق باشید.

جواب داده شده در علی رضایی <m>★</m>
1139 امتیاز

1
با تشکر از پاسخ مبسوط و عملی-کاربردی شما. ــ سجاد شفی زاده در 5 سال قبل
1
@سجاد.شفی.زاده.★ خواهش می کنم . گفتم مقداری بیشتر توضیح داده بشه تا علاقه مندان بتوانند پروژه خودشون رو روی داکر اجرا کنند ــ علی رضایی در 5 سال قبل
1
ببخشید یک سوالی دارم من، توی اون تصویری که به عنوان Hello World! گذاشتید، پایینش نوشته Visits: cannot connect to Redis, counter disabled. خواستم بدونم مشکل کجاست؟ دلیل اینکه نتونسته به ردیس وصل شه چیه؟ ــ سجاد شفی زاده در 5 سال قبل
2
@سجاد.شفی.زاده.★ همانطور که دقت کردید ما در داکر فایل خود ردیس را نصب نکرده ایم . فقط پکیج آن را برای پایتون نصب کردیم برای رفع این خطا تنها لازم است خود ردیس نیز نصب شود. ــ علی رضایی در 5 سال قبل

500 کاراکتر باقی مانده


جواب شما
     
.....
×

×

جعبه لام تا کام


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

تبلیغات توضیحی


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

تبلیغات تصویری