This media is not supported in your browser
VIEW IN TELEGRAM
Always ask yourself how far you can go rather than how long it will take. 🙌
❤🔥4👍2🔥1
شبکه ی Overlay چیست؟
شبکهی Overlay یا شبکه همپوشانی یک نوع شبکهی مجازی است که روی یک شبکهی فیزیکی دیگر (مثل اینترنت یا شبکهی داخلی) ساخته میشود. این شبکه کمک میکند تا دستگاهها یا سرورهایی که از نظر فیزیکی از هم دور هستند، طوری به هم متصل شوند که انگار در یک شبکه محلی و نزدیک به هم هستند.
چرا Overlay Network؟
گاهی اوقات در محیطهای بزرگ مثل مراکز داده یا زیرساختهای ابری (cloud)، نیاز داریم تا سرورها، کانتینرها، یا ماشینهای مجازی مختلف، بدون توجه به موقعیت جغرافیاییشان، با هم در ارتباط باشند. شبکههای فیزیکی محدودیتهایی دارند و در تغییرات و توسعه ممکن است زمانبر و پرهزینه باشند. اینجا است که Overlay Network وارد کار میشود؛ یعنی یک شبکه مجازی که به شما اجازه میدهد دستگاهها و سرورها را بدون تغییر در شبکهی فیزیکی، به هم متصل کنید.
شبکه Overlay چگونه کار میکند؟
شبکه Overlay از روشی به نام تونلزنی (Tunneling) استفاده میکند. در این روش، بستههای داده (Packetها) طوری بستهبندی یا کپسوله (Encapsulate) میشوند که انگار از یک شبکه مجازی عبور میکنند، در حالی که در واقع از بستر شبکهی فیزیکی منتقل میشوند. به عبارت سادهتر، دادهها در یک بستهی مخصوص پیچیده شده و روی مسیرهای شبکهی فیزیکی منتقل میشوند، اما به شبکهی مجازی تعلق دارند.
فرض کنید دو سرور در دو دیتاسنتر مختلف دارید که میخواهید به هم متصل شوند. با ایجاد یک Overlay Network، میتوانید این دو سرور را طوری به هم وصل کنید که انگار در یک شبکه محلی و یکجا هستند، حتی اگر کیلومترها از هم فاصله داشته باشند.
کاربردهای Overlay Network
شبکه Overlay بیشتر در موارد زیر کاربرد دارد:
زیرساختهای ابری (Cloud Infrastructure): در محیطهایی مثل Amazon Web Services (AWS) یا Google Cloud، Overlay Network امکان ارتباط بین منابع مختلف (مثل ماشینهای مجازی یا کانتینرها) را فراهم میکند.
کانتینرها و Docker: در داکر (Docker) و ارکستراسیون کانتینرها (مانند Kubernetes)، Overlay Network کمک میکند تا کانتینرها که ممکن است روی سرورهای مختلف باشند، بهسادگی با هم ارتباط برقرار کنند. این نوع شبکه در Docker Swarm برای ارتباط امن و سریع کانتینرها به کار میرود.
شبکههای چند لایهای و ایمن: Overlay Network میتواند برای ایجاد شبکههای امن و چند لایه استفاده شود. مثلا در شبکههای سازمانی برای اتصال بین دفاتر مختلف از این روش استفاده میشود.
مزایای Overlay Network
انعطافپذیری بالا: بدون نیاز به تغییر زیرساخت فیزیکی، میتوان بهراحتی شبکههای جدید ایجاد و تنظیم کرد.
مقیاسپذیری: بهراحتی میتوان سرورها و دستگاههای جدید را به شبکه اضافه کرد.
افزایش امنیت: بستهها بهصورت تونلزده ارسال میشوند که امنیت بیشتری به ارتباطات بین دستگاهها میدهد.
ارتباط ساده در محیطهای توزیعشده: در پروژههای بزرگ که منابع در نقاط مختلف جغرافیایی پراکنده هستند، Overlay Network راهکاری کارآمد برای اتصال دستگاهها و سرورها ارائه میدهد.
مثال ساده از Overlay Network
فرض کنید یک سازمان دارای چند شعبه در شهرهای مختلف است و هر شعبه دارای سرورهای مخصوص به خودش است. اگر این سازمان بخواهد همهی سرورها را طوری به هم متصل کند که انگار همگی در یک ساختمان هستند، میتواند از Overlay Network استفاده کند. این شبکه مجازی طوری کار میکند که تمام سرورها به یکدیگر متصل میشوند و بدون در نظر گرفتن فاصله فیزیکی، تبادل اطلاعات انجام میدهند.
نتیجهگیری
شبکهی Overlay یکی از راهکارهای مدرن و کارآمد برای ایجاد ارتباطات مجازی بین منابع مختلف است. با این شبکه میتوانید سرورها، کانتینرها و منابع مختلف را بهراحتی و بدون نیاز به تغییرات زیرساخت فیزیکی به هم متصل کنید و از مزایای انعطافپذیری و امنیت آن بهرهمند شوید.
این شبکهها در دنیای امروزی، مخصوصا در حوزههای ابری و کانتینرها، بسیار پرکاربرد هستند و ابزار مناسبی برای سادهسازی و مدیریت شبکههای پیچیده به حساب میآیند.
شبکهی Overlay یا شبکه همپوشانی یک نوع شبکهی مجازی است که روی یک شبکهی فیزیکی دیگر (مثل اینترنت یا شبکهی داخلی) ساخته میشود. این شبکه کمک میکند تا دستگاهها یا سرورهایی که از نظر فیزیکی از هم دور هستند، طوری به هم متصل شوند که انگار در یک شبکه محلی و نزدیک به هم هستند.
چرا Overlay Network؟
گاهی اوقات در محیطهای بزرگ مثل مراکز داده یا زیرساختهای ابری (cloud)، نیاز داریم تا سرورها، کانتینرها، یا ماشینهای مجازی مختلف، بدون توجه به موقعیت جغرافیاییشان، با هم در ارتباط باشند. شبکههای فیزیکی محدودیتهایی دارند و در تغییرات و توسعه ممکن است زمانبر و پرهزینه باشند. اینجا است که Overlay Network وارد کار میشود؛ یعنی یک شبکه مجازی که به شما اجازه میدهد دستگاهها و سرورها را بدون تغییر در شبکهی فیزیکی، به هم متصل کنید.
شبکه Overlay چگونه کار میکند؟
شبکه Overlay از روشی به نام تونلزنی (Tunneling) استفاده میکند. در این روش، بستههای داده (Packetها) طوری بستهبندی یا کپسوله (Encapsulate) میشوند که انگار از یک شبکه مجازی عبور میکنند، در حالی که در واقع از بستر شبکهی فیزیکی منتقل میشوند. به عبارت سادهتر، دادهها در یک بستهی مخصوص پیچیده شده و روی مسیرهای شبکهی فیزیکی منتقل میشوند، اما به شبکهی مجازی تعلق دارند.
فرض کنید دو سرور در دو دیتاسنتر مختلف دارید که میخواهید به هم متصل شوند. با ایجاد یک Overlay Network، میتوانید این دو سرور را طوری به هم وصل کنید که انگار در یک شبکه محلی و یکجا هستند، حتی اگر کیلومترها از هم فاصله داشته باشند.
کاربردهای Overlay Network
شبکه Overlay بیشتر در موارد زیر کاربرد دارد:
زیرساختهای ابری (Cloud Infrastructure): در محیطهایی مثل Amazon Web Services (AWS) یا Google Cloud، Overlay Network امکان ارتباط بین منابع مختلف (مثل ماشینهای مجازی یا کانتینرها) را فراهم میکند.
کانتینرها و Docker: در داکر (Docker) و ارکستراسیون کانتینرها (مانند Kubernetes)، Overlay Network کمک میکند تا کانتینرها که ممکن است روی سرورهای مختلف باشند، بهسادگی با هم ارتباط برقرار کنند. این نوع شبکه در Docker Swarm برای ارتباط امن و سریع کانتینرها به کار میرود.
شبکههای چند لایهای و ایمن: Overlay Network میتواند برای ایجاد شبکههای امن و چند لایه استفاده شود. مثلا در شبکههای سازمانی برای اتصال بین دفاتر مختلف از این روش استفاده میشود.
مزایای Overlay Network
انعطافپذیری بالا: بدون نیاز به تغییر زیرساخت فیزیکی، میتوان بهراحتی شبکههای جدید ایجاد و تنظیم کرد.
مقیاسپذیری: بهراحتی میتوان سرورها و دستگاههای جدید را به شبکه اضافه کرد.
افزایش امنیت: بستهها بهصورت تونلزده ارسال میشوند که امنیت بیشتری به ارتباطات بین دستگاهها میدهد.
ارتباط ساده در محیطهای توزیعشده: در پروژههای بزرگ که منابع در نقاط مختلف جغرافیایی پراکنده هستند، Overlay Network راهکاری کارآمد برای اتصال دستگاهها و سرورها ارائه میدهد.
مثال ساده از Overlay Network
فرض کنید یک سازمان دارای چند شعبه در شهرهای مختلف است و هر شعبه دارای سرورهای مخصوص به خودش است. اگر این سازمان بخواهد همهی سرورها را طوری به هم متصل کند که انگار همگی در یک ساختمان هستند، میتواند از Overlay Network استفاده کند. این شبکه مجازی طوری کار میکند که تمام سرورها به یکدیگر متصل میشوند و بدون در نظر گرفتن فاصله فیزیکی، تبادل اطلاعات انجام میدهند.
نتیجهگیری
شبکهی Overlay یکی از راهکارهای مدرن و کارآمد برای ایجاد ارتباطات مجازی بین منابع مختلف است. با این شبکه میتوانید سرورها، کانتینرها و منابع مختلف را بهراحتی و بدون نیاز به تغییرات زیرساخت فیزیکی به هم متصل کنید و از مزایای انعطافپذیری و امنیت آن بهرهمند شوید.
این شبکهها در دنیای امروزی، مخصوصا در حوزههای ابری و کانتینرها، بسیار پرکاربرد هستند و ابزار مناسبی برای سادهسازی و مدیریت شبکههای پیچیده به حساب میآیند.
👍8❤🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Let your action talk - not your mouth!
🔥5❤🔥1👍1
این ویدیو درباره اکسپشنهای سفارسی در پایتون است و نحوه مدیریت خطاها و نوشتن کدهای قابل توسعه را توضیح میدهد.
نکات مهم:
📚 معرفی اکسپشنهای سفارسی
🔧 اهمیت مدیریت خطا در برنامهنویسی
✏️ ایجاد کلاسهای اختصاصی برای خطاها
🚀 بهبود قابلیت توسعه کد
💡 پیشنهاد نوشتن توضیحات برای اکسپشنها
🔍 بررسی کتابخانههای مفید
🎥 تماشای مثالهای عملی
کلیات:
⚙️ مدیریت خطا: نوشتن اکسپشنهای سفارسی به توسعهدهندگان کمک میکند تا خطاهای احتمالی را به وضوح شناسایی و مدیریت کنند.
📈 قابلیت توسعه: با استفاده از اکسپشنهای سفارسی، کدها به مرور زمان قابل توسعهتر و نگهداری آسانتری خواهند داشت.
🛠️ استفاده از کلاسهای اختصاصی: ایجاد کلاسهای اختصاصی برای اکسپشنها، خطاها را واضحتر و قابل درکتر میکند.
📖 توضیحات برای اکسپشنها: نوشتن توضیحات مختصر برای اکسپشنها میتواند به درک بهتر دلایل وقوع خطا کمک کند.
🔄 کتابخانههای مفید: استفاده از کتابخانههای معتبر که اکسپشنهای مناسب را ارائه میدهند، به بهبود کیفیت کد کمک میکند.
🧩 مدیریت بهتر خطاها: با مدیریت مناسب خطاها، توسعهدهندگان میتوانند از بروز مشکلات بزرگ در پروژههایشان جلوگیری کنند.
🎓 آموزش پیوسته: یادگیری و بهکارگیری تکنیکهای جدید برای مدیریت خطاها، از جمله اکسپشنهای سفارسی، به توسعهدهندگان کمک میکند تا مهارتهای خود را ارتقاء دهند.
https://youtu.be/mTlLPMYjRFk?si=WByHVO8jmlE6_AzX
نکات مهم:
📚 معرفی اکسپشنهای سفارسی
🔧 اهمیت مدیریت خطا در برنامهنویسی
✏️ ایجاد کلاسهای اختصاصی برای خطاها
🚀 بهبود قابلیت توسعه کد
💡 پیشنهاد نوشتن توضیحات برای اکسپشنها
🔍 بررسی کتابخانههای مفید
🎥 تماشای مثالهای عملی
کلیات:
⚙️ مدیریت خطا: نوشتن اکسپشنهای سفارسی به توسعهدهندگان کمک میکند تا خطاهای احتمالی را به وضوح شناسایی و مدیریت کنند.
📈 قابلیت توسعه: با استفاده از اکسپشنهای سفارسی، کدها به مرور زمان قابل توسعهتر و نگهداری آسانتری خواهند داشت.
🛠️ استفاده از کلاسهای اختصاصی: ایجاد کلاسهای اختصاصی برای اکسپشنها، خطاها را واضحتر و قابل درکتر میکند.
📖 توضیحات برای اکسپشنها: نوشتن توضیحات مختصر برای اکسپشنها میتواند به درک بهتر دلایل وقوع خطا کمک کند.
🔄 کتابخانههای مفید: استفاده از کتابخانههای معتبر که اکسپشنهای مناسب را ارائه میدهند، به بهبود کیفیت کد کمک میکند.
🧩 مدیریت بهتر خطاها: با مدیریت مناسب خطاها، توسعهدهندگان میتوانند از بروز مشکلات بزرگ در پروژههایشان جلوگیری کنند.
🎓 آموزش پیوسته: یادگیری و بهکارگیری تکنیکهای جدید برای مدیریت خطاها، از جمله اکسپشنهای سفارسی، به توسعهدهندگان کمک میکند تا مهارتهای خود را ارتقاء دهند.
https://youtu.be/mTlLPMYjRFk?si=WByHVO8jmlE6_AzX
YouTube
اکسپشن های سفارسی در پایتون | Custom Exception in Python
من در شبکه های اجتماعی دیگه:
اینستاگرام
https://instagram.com/am.mthri
کانال تلگرام
https://news.1rj.ru/str/mthri_tips
توییتر
https://twitter.com/a_mthri
وبلاگ
https://iamamir.ir
اینستاگرام
https://instagram.com/am.mthri
کانال تلگرام
https://news.1rj.ru/str/mthri_tips
توییتر
https://twitter.com/a_mthri
وبلاگ
https://iamamir.ir
👍2❤🔥1
(پارت دوم)
داکر Swarm چیست؟
داکر Swarm یک ابزار برای مدیریت و هماهنگسازی کانتینرهای Docker است که امکان اجرای برنامهها در مقیاس بزرگ را روی چندین سرور فراهم میکند. در واقع، با استفاده از Docker Swarm میتوانید یک کلاستر از سرورهای مختلف ایجاد کنید و کانتینرها را بهطور خودکار روی این سرورها توزیع و مدیریت نمایید.
در Docker Swarm، هر سرور میتواند بهعنوان یک گره (Node) در نظر گرفته شود:
گره مدیر (Manager Node): وظیفه مدیریت کل کلاستر و تصمیمگیری دربارهی توزیع کانتینرها روی گرهها را بر عهده دارد. به این گره Master هم میگن.
گره کارگر (Worker Node): وظیفه اصلی این گرهها اجرای کانتینرها است و از گرههای مدیر دستور میگیرند.
مراحل و مثال عملی
۱. فعالسازی Docker Swarm: فرض کنید یک سرور با آدرس IP 192.168.1.10 دارید. برای شروع Docker Swarm، روی سرور اصلی به عنوان node مدیر یا Manager دستور زیر را اجرا کنید:
پس از اجرای این دستور، Docker Swarm راهاندازی میشود و پیامی حاوی دستوری نمایش میدهد که باید آن را روی سرورهای دیگر اجرا کنید تا به کلاستر بپیوندند.
۲. افزودن گرههای کارگر یا همون Worker ها به کلاستر: با اجرای دستوری که گره مدیر ارائه کرده، میتوانید گرههای کارگر را به کلاستر متصل کنید. دستور برای گرههای کارگر معمولاً به شکل زیر است:
این دستور را روی سرورهای دیگر اجرا کنید و به کلاستر اضافه شوید.
نکته ی مهم در این بخش که از نکات مهم حوزه ی شبکه هست ، دقت در باز بودن پورت مورد نظر در فایروال است!
۳. ایجاد سرویس در Docker Swarm: حالا میتوانید یک سرویس روی کلاستر خود اجرا کنید. بهعنوان مثال، یک سرویس وب ساده از nginx ایجاد میکنیم:
که در اینجا:
آپشن --name my-nginx نام سرویس را مشخص میکند.
آپشن -p 80:80 پورت ۸۰ را برای سرویس در دسترس قرار میدهد.
و آپشن --replicas 3 تعداد نسخههای (Replica) کانتینر را مشخص میکند؛ یعنی ۳ کانتینر nginx روی کلاستر توزیع میشود.
مزایا
خودکارسازی توزیع کانتینرها: Docker Swarm بهطور خودکار کانتینرها را روی گرههای مختلف توزیع میکند.
تابآوری بالا: در صورت از دست رفتن یکی از گرهها، Swarm بهطور خودکار کانتینرها را روی گرههای دیگر بازیابی میکند.
مقیاسپذیری: بهراحتی میتوان تعداد گرهها و کانتینرها را افزایش یا کاهش داد.
بنابر این Docker Swarm ابزاری عالی برای اجرای برنامههای توزیعشده است که بهویژه برای سیستمهایی با نیاز به دسترسی بالا و مدیریت کانتینرها مناسب است.
داکر Swarm چیست؟
داکر Swarm یک ابزار برای مدیریت و هماهنگسازی کانتینرهای Docker است که امکان اجرای برنامهها در مقیاس بزرگ را روی چندین سرور فراهم میکند. در واقع، با استفاده از Docker Swarm میتوانید یک کلاستر از سرورهای مختلف ایجاد کنید و کانتینرها را بهطور خودکار روی این سرورها توزیع و مدیریت نمایید.
در Docker Swarm، هر سرور میتواند بهعنوان یک گره (Node) در نظر گرفته شود:
گره مدیر (Manager Node): وظیفه مدیریت کل کلاستر و تصمیمگیری دربارهی توزیع کانتینرها روی گرهها را بر عهده دارد. به این گره Master هم میگن.
گره کارگر (Worker Node): وظیفه اصلی این گرهها اجرای کانتینرها است و از گرههای مدیر دستور میگیرند.
مراحل و مثال عملی
۱. فعالسازی Docker Swarm: فرض کنید یک سرور با آدرس IP 192.168.1.10 دارید. برای شروع Docker Swarm، روی سرور اصلی به عنوان node مدیر یا Manager دستور زیر را اجرا کنید:
docker swarm init --advertise-addr 192.168.1.10
پس از اجرای این دستور، Docker Swarm راهاندازی میشود و پیامی حاوی دستوری نمایش میدهد که باید آن را روی سرورهای دیگر اجرا کنید تا به کلاستر بپیوندند.
۲. افزودن گرههای کارگر یا همون Worker ها به کلاستر: با اجرای دستوری که گره مدیر ارائه کرده، میتوانید گرههای کارگر را به کلاستر متصل کنید. دستور برای گرههای کارگر معمولاً به شکل زیر است:
docker swarm join --token <token> 192.168.1.10:2377
این دستور را روی سرورهای دیگر اجرا کنید و به کلاستر اضافه شوید.
نکته ی مهم در این بخش که از نکات مهم حوزه ی شبکه هست ، دقت در باز بودن پورت مورد نظر در فایروال است!
۳. ایجاد سرویس در Docker Swarm: حالا میتوانید یک سرویس روی کلاستر خود اجرا کنید. بهعنوان مثال، یک سرویس وب ساده از nginx ایجاد میکنیم:
docker service create --name my-nginx -p 80:80 --replicas 3 nginx
که در اینجا:
آپشن --name my-nginx نام سرویس را مشخص میکند.
آپشن -p 80:80 پورت ۸۰ را برای سرویس در دسترس قرار میدهد.
و آپشن --replicas 3 تعداد نسخههای (Replica) کانتینر را مشخص میکند؛ یعنی ۳ کانتینر nginx روی کلاستر توزیع میشود.
مزایا
خودکارسازی توزیع کانتینرها: Docker Swarm بهطور خودکار کانتینرها را روی گرههای مختلف توزیع میکند.
تابآوری بالا: در صورت از دست رفتن یکی از گرهها، Swarm بهطور خودکار کانتینرها را روی گرههای دیگر بازیابی میکند.
مقیاسپذیری: بهراحتی میتوان تعداد گرهها و کانتینرها را افزایش یا کاهش داد.
بنابر این Docker Swarm ابزاری عالی برای اجرای برنامههای توزیعشده است که بهویژه برای سیستمهایی با نیاز به دسترسی بالا و مدیریت کانتینرها مناسب است.
YouTube
Docker Swarm | Docker Swarm Tutorial | What Is Docker Swarm? | Docker Swarm Example | Simplilearn
"️🔥 Cloud Architect Masters Program - https://www.simplilearn.com/cloud-solutions-architect-masters-program-training?utm_campaign=Tm0Q5zr3FL4&utm_medium=DenoscriptionFFF&utm_source=Youtube
️🔥Purdue - Cloud Computing and DevOps Certification Program - htt…
️🔥Purdue - Cloud Computing and DevOps Certification Program - htt…
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
زیگموند فروید میگه "وسعت شخصیت هر فرد توسط بزرگی مشکلی که میتواند او را از حالت منطقی بیرون آورد تعریف میشود."
تاب آوری و حل مسئله و نحوه برخورد و واکنش افراد در برابر مشکلات و چالش هاشون عیار اونا رو تعیین میکنه!
تاب آوری و حل مسئله و نحوه برخورد و واکنش افراد در برابر مشکلات و چالش هاشون عیار اونا رو تعیین میکنه!
👍6❤🔥1
Media is too big
VIEW IN TELEGRAM
این ویدیو رو کامل ببینید، این تکنولوژی روی سرور های G11 شرکت HPE ارائه میگردد.
🔥4👍2❤🔥1❤1
آپشن --rm در داکر چیست؟
در Docker، گزینه --rm به این معنی است که وقتی اجرای کانتینر به پایان رسید، بهطور خودکار کانتینر حذف شود. این گزینه مخصوصاً برای کانتینرهای موقت مفید است که تنها یک عملیات مشخص را انجام میدهند و دیگر نیازی به حفظ آنها بعد از اتمام کار نیست.
برای مثال:
در این دستور ما محتوای دایرکتوری /etc/nginx را در مسیر /backup کپی میکنیم ، و از طرفی این دایرکتوری backup هم به مسیر /mnt/nginx_config مونت شده است ، پس ما یک کپی از مسیر /etc/nginx در سیستم هاستمون داریم.
در این دستور، پس از کپی کردن فایلها، کانتینر بهطور خودکار حذف میشود و نیازی نیست آن را بهصورت دستی پاک کنید.
پس این آپشن صرفا جهت کپی کردن فایل های دایرکتوری مربوطه ایجاد شده و بعد از انجام عملیات بطور خودکار حذف میشود
در Docker، گزینه --rm به این معنی است که وقتی اجرای کانتینر به پایان رسید، بهطور خودکار کانتینر حذف شود. این گزینه مخصوصاً برای کانتینرهای موقت مفید است که تنها یک عملیات مشخص را انجام میدهند و دیگر نیازی به حفظ آنها بعد از اتمام کار نیست.
برای مثال:
docker run --rm -v /mnt/nginx_config:/backup nginx:alpine cp -r /etc/nginx/* /backup
در این دستور ما محتوای دایرکتوری /etc/nginx را در مسیر /backup کپی میکنیم ، و از طرفی این دایرکتوری backup هم به مسیر /mnt/nginx_config مونت شده است ، پس ما یک کپی از مسیر /etc/nginx در سیستم هاستمون داریم.
در این دستور، پس از کپی کردن فایلها، کانتینر بهطور خودکار حذف میشود و نیازی نیست آن را بهصورت دستی پاک کنید.
پس این آپشن صرفا جهت کپی کردن فایل های دایرکتوری مربوطه ایجاد شده و بعد از انجام عملیات بطور خودکار حذف میشود
❤🔥3
(پارت سوم)
داکر volume چیست؟
در Docker، موضوع volume یا «حجم» یک فضای ذخیرهسازی پایدار است که Docker برای ذخیره دادههای کانتینرها ایجاد و مدیریت میکند. برخلاف فایلهای عادی که درون سیستم فایل کانتینر ذخیره میشوند و با حذف کانتینر از بین میروند،
دادههای ذخیرهشده در volume باقی میمانند حتی اگر کانتینر حذف شود. این ویژگی volume را به گزینهای عالی برای ذخیرهی دادههایی تبدیل میکند که لازم است بعد از حذف یا بروزرسانی کانتینرها همچنان در دسترس باشند.
چرا از Volume استفاده میکنیم؟
پایداری دادهها: دادههایی که در volume ذخیره میشوند با حذف یا بازسازی کانتینر پاک نمیشوند و برای کانتینرهای بعدی قابل استفاده هستند.
بهینهسازی عملکرد: Docker volumeها را بهینهسازی کرده است تا عملکرد بالایی در ذخیرهسازی دادهها ارائه دهند.
استقلال از سیستم فایل میزبان: برخلاف bind mount، volumeها به مسیرهای فایل خاصی در سیستم میزبان وابسته نیستند و Docker آنها را در دایرکتوری خاص خودش مدیریت میکند. این امر به امنیت و مدیریت آسانتر دادهها کمک میکند.
چگونه یک Volume ایجاد و استفاده کنیم؟
برای ایجاد و استفاده از volume، میتوان از دستورات زیر استفاده کرد:
ایجاد یک Volume
برای ایجاد volume، از دستور docker volume create استفاده میکنیم:
این دستور یک volume به نام my_volume ایجاد میکند. با استفاده از این نام میتوانیم volume را به هر کانتینری که نیاز داریم متصل کنیم.
متصل کردن Volume به کانتینر
برای استفاده از volume در یک کانتینر، از گزینه -v استفاده میکنیم:
در اینجا: my_volume به کانتینر متصل شده است.
مسیر /data در داخل کانتینر به این volume اختصاص یافته است. هر چیزی که داخل /data در کانتینر ذخیره شود، به volume منتقل میشود و پایدار خواهد بود.
ویژگیهای Volume در Docker
کپی خودکار دادهها: اگر volume خالی باشد و به مسیری در کانتینر متصل شود که شامل فایلهای پیشفرض است، Docker این فایلها را به volume کپی میکند. این ویژگی برای ذخیرهسازی تنظیمات پیشفرض مفید است.
مدیریت مرکزی: Docker بهصورت مرکزی volumeها را مدیریت میکند و آنها را در یک مسیر خاص در سیستم میزبان ذخیره میکند. این مسیر معمولاً /var/lib/docker/volumes است.
استفادهی چندگانه: یک volume را میتوان به چندین کانتینر بهصورت همزمان متصل کرد، که امکان اشتراکگذاری دادهها بین کانتینرها را فراهم میسازد.
داکر volume چیست؟
در Docker، موضوع volume یا «حجم» یک فضای ذخیرهسازی پایدار است که Docker برای ذخیره دادههای کانتینرها ایجاد و مدیریت میکند. برخلاف فایلهای عادی که درون سیستم فایل کانتینر ذخیره میشوند و با حذف کانتینر از بین میروند،
دادههای ذخیرهشده در volume باقی میمانند حتی اگر کانتینر حذف شود. این ویژگی volume را به گزینهای عالی برای ذخیرهی دادههایی تبدیل میکند که لازم است بعد از حذف یا بروزرسانی کانتینرها همچنان در دسترس باشند.
چرا از Volume استفاده میکنیم؟
پایداری دادهها: دادههایی که در volume ذخیره میشوند با حذف یا بازسازی کانتینر پاک نمیشوند و برای کانتینرهای بعدی قابل استفاده هستند.
بهینهسازی عملکرد: Docker volumeها را بهینهسازی کرده است تا عملکرد بالایی در ذخیرهسازی دادهها ارائه دهند.
استقلال از سیستم فایل میزبان: برخلاف bind mount، volumeها به مسیرهای فایل خاصی در سیستم میزبان وابسته نیستند و Docker آنها را در دایرکتوری خاص خودش مدیریت میکند. این امر به امنیت و مدیریت آسانتر دادهها کمک میکند.
چگونه یک Volume ایجاد و استفاده کنیم؟
برای ایجاد و استفاده از volume، میتوان از دستورات زیر استفاده کرد:
ایجاد یک Volume
برای ایجاد volume، از دستور docker volume create استفاده میکنیم:
docker volume create my_volume
این دستور یک volume به نام my_volume ایجاد میکند. با استفاده از این نام میتوانیم volume را به هر کانتینری که نیاز داریم متصل کنیم.
متصل کردن Volume به کانتینر
برای استفاده از volume در یک کانتینر، از گزینه -v استفاده میکنیم:
docker run -itd --name my_container -v my_volume:/data ubuntu
در اینجا: my_volume به کانتینر متصل شده است.
مسیر /data در داخل کانتینر به این volume اختصاص یافته است. هر چیزی که داخل /data در کانتینر ذخیره شود، به volume منتقل میشود و پایدار خواهد بود.
ویژگیهای Volume در Docker
کپی خودکار دادهها: اگر volume خالی باشد و به مسیری در کانتینر متصل شود که شامل فایلهای پیشفرض است، Docker این فایلها را به volume کپی میکند. این ویژگی برای ذخیرهسازی تنظیمات پیشفرض مفید است.
مدیریت مرکزی: Docker بهصورت مرکزی volumeها را مدیریت میکند و آنها را در یک مسیر خاص در سیستم میزبان ذخیره میکند. این مسیر معمولاً /var/lib/docker/volumes است.
استفادهی چندگانه: یک volume را میتوان به چندین کانتینر بهصورت همزمان متصل کرد، که امکان اشتراکگذاری دادهها بین کانتینرها را فراهم میسازد.
YouTube
Docker Volumes explained in 6 minutes
Understand Docker Volumes in 6 minutes. Docker Volumes in Docker-Compose
► Subscribe To Me On Youtube: https://bit.ly/2z5rvTV
In this video you will learn:
0:00 - Intro
0:21 - When do we need Docker Volumes?
1:02 - What is Docker Volumes?
2:04 - 3 Docker…
► Subscribe To Me On Youtube: https://bit.ly/2z5rvTV
In this video you will learn:
0:00 - Intro
0:21 - When do we need Docker Volumes?
1:02 - What is Docker Volumes?
2:04 - 3 Docker…
❤3❤🔥1
تفاوت بین Bind Mount و Volume در Docker
بی اطلاعی از این موضوع میتونه باگ بزرگی بشه براتون و در نهایت کانتینر در هنگام اجرا با Exit code 127 بیوفته.
در داکر ، bind mount و volume دو روش مجزا برای مدیریت دادهها هستند و هر یک عملکرد خاص خود را دارند:
1.حالت اول Bind Mount
در Bind Mount، یک پوشه دلخواه از سیستم میزبان به کانتینر متصل میشود. هر تغییری که در این پوشه میزبان ایجاد شود، مستقیماً بر روی کانتینر تاثیر میگذارد. در این حالت:
اگر پوشهی میزبان خالی باشد، مسیر هدف در کانتینر نیز خالی خواهد بود. Docker هیچ فایل پیشفرضی را از کانتینر به این پوشه کپی نمیکند.
2.حالت دوم Volume
در این حالت Volume در Docker بهصورت خودکار یک فضای ذخیرهسازی مجزا ایجاد میکند که توسط خود Docker مدیریت میشود. وقتی یک مسیر از کانتینر را به volume متصل میکنید:
اگر volume خالی باشد، Docker بهطور خودکار فایلهای پیشفرض را از مسیر مورد نظر در کانتینر به volume کپی میکند.
بنابر این Volumeها بهطور مستقل از سیستم فایل میزبان عمل میکنند و از این رو، برای ذخیرهسازی دادهها و فایلهای پیکربندی پایدار بسیار مناسب هستند.
در این حالت، حتی اگر volume خالی باشد، Docker بهصورت خودکار فایلهای تنظیمات پیشفرض را از کانتینر به volume کپی میکند و Nginx بدون مشکل اجرا میشود.
پس به عنوان نتیجه :
هنگام کار با Docker، شناخت تفاوتهای bind mount و volume میتواند از بروز مشکلات زیادی جلوگیری کند. Bind mount به شما امکان میدهد تا از مسیرهای خاص سیستم میزبان استفاده کنید، اما اگر این مسیرها خالی باشند، ممکن است باعث بروز خطا در کانتینر شوند. در مقابل، volume یک فضای مستقل فراهم میکند که Docker بهطور خودکار فایلهای پیشفرض کانتینر را در آن قرار میدهد.
بی اطلاعی از این موضوع میتونه باگ بزرگی بشه براتون و در نهایت کانتینر در هنگام اجرا با Exit code 127 بیوفته.
در داکر ، bind mount و volume دو روش مجزا برای مدیریت دادهها هستند و هر یک عملکرد خاص خود را دارند:
1.حالت اول Bind Mount
در Bind Mount، یک پوشه دلخواه از سیستم میزبان به کانتینر متصل میشود. هر تغییری که در این پوشه میزبان ایجاد شود، مستقیماً بر روی کانتینر تاثیر میگذارد. در این حالت:
اگر پوشهی میزبان خالی باشد، مسیر هدف در کانتینر نیز خالی خواهد بود. Docker هیچ فایل پیشفرضی را از کانتینر به این پوشه کپی نمیکند.
2.حالت دوم Volume
در این حالت Volume در Docker بهصورت خودکار یک فضای ذخیرهسازی مجزا ایجاد میکند که توسط خود Docker مدیریت میشود. وقتی یک مسیر از کانتینر را به volume متصل میکنید:
اگر volume خالی باشد، Docker بهطور خودکار فایلهای پیشفرض را از مسیر مورد نظر در کانتینر به volume کپی میکند.
بنابر این Volumeها بهطور مستقل از سیستم فایل میزبان عمل میکنند و از این رو، برای ذخیرهسازی دادهها و فایلهای پیکربندی پایدار بسیار مناسب هستند.
در این حالت، حتی اگر volume خالی باشد، Docker بهصورت خودکار فایلهای تنظیمات پیشفرض را از کانتینر به volume کپی میکند و Nginx بدون مشکل اجرا میشود.
پس به عنوان نتیجه :
هنگام کار با Docker، شناخت تفاوتهای bind mount و volume میتواند از بروز مشکلات زیادی جلوگیری کند. Bind mount به شما امکان میدهد تا از مسیرهای خاص سیستم میزبان استفاده کنید، اما اگر این مسیرها خالی باشند، ممکن است باعث بروز خطا در کانتینر شوند. در مقابل، volume یک فضای مستقل فراهم میکند که Docker بهطور خودکار فایلهای پیشفرض کانتینر را در آن قرار میدهد.
👍5❤🔥2❤1
پکیج at چیست؟
گاهی پیش میاد که میخواین دستوری رو در زمان خاصی اجرا کنید ، مثلا دستور reboot رو در ساعت خاصی اجرا کنید که سرور ری استارت شود ، و این دستور قرار هست تنها یکبار اجرا شود .
ابزار Cronjob هم وجود دارد که این ابزار برای اجرای تسک ها به صورت تکراری در زمان های خاص تعریف میشود .
پکیج at ابزاری است که برای زمانبندی اجرای دستورات در یک زمان خاص در آینده استفاده میشود. این ابزار به شما امکان میدهد دستورات یا اسکریپتها را در زمانی مشخص بدون نیاز به اجرای دستی آنها اجرا کنید.
ویژگیهای اصلی پکیج at:
اجرای دستورات در آینده: میتوانید دستوری را برای اجرا در یک زمان خاص (مثل "11:00 AM امروز" یا "فردا ساعت 10:30") زمانبندی کنید.
یکبار اجرا شدن: برخلاف کرونجاب که دستورات را بهطور مکرر اجرا میکند، at فقط یکبار دستور را اجرا میکند.
سادگی: برای وظایف زمانبندیشده ساده که نیازی به تکرار ندارند، بسیار کاربردی است.
نیاز به سرویس atd: این ابزار برای کارکرد به سرویس atd وابسته است که باید در سیستم شما در حال اجرا باشد.
نصب و راهاندازی:
نصب:
روی CentOS یا RHEL، دستور زیر را اجرا کنید:
روی Ubuntu دستور زیر را اجرا کنید:
فعال کردن سرویس:
سرویس atd را فعال و شروع کنید:
زمانبندی یک دستور:
برای مثال:
این دستور سرور را در ساعت 11:00 ریاستارت میکند.
مشاهده دستورات زمانبندیشده:
لغو یک تسک:
برای لغو، شماره تسک را از atq پیدا کنید و از دستور زیر استفاده کنید:
چه زمانی از at استفاده کنیم؟
زمانی که نیاز به اجرای یک دستور در زمان مشخص بدون تکرار دارید.
برای وظایف سادهتر که نیازی به فایلهای پیچیده کرونجاب ندارند.
به طور کلی، at گزینهای مفید برای زمانبندی سریع و یکباره دستورات است.
گاهی پیش میاد که میخواین دستوری رو در زمان خاصی اجرا کنید ، مثلا دستور reboot رو در ساعت خاصی اجرا کنید که سرور ری استارت شود ، و این دستور قرار هست تنها یکبار اجرا شود .
ابزار Cronjob هم وجود دارد که این ابزار برای اجرای تسک ها به صورت تکراری در زمان های خاص تعریف میشود .
پکیج at ابزاری است که برای زمانبندی اجرای دستورات در یک زمان خاص در آینده استفاده میشود. این ابزار به شما امکان میدهد دستورات یا اسکریپتها را در زمانی مشخص بدون نیاز به اجرای دستی آنها اجرا کنید.
ویژگیهای اصلی پکیج at:
اجرای دستورات در آینده: میتوانید دستوری را برای اجرا در یک زمان خاص (مثل "11:00 AM امروز" یا "فردا ساعت 10:30") زمانبندی کنید.
یکبار اجرا شدن: برخلاف کرونجاب که دستورات را بهطور مکرر اجرا میکند، at فقط یکبار دستور را اجرا میکند.
سادگی: برای وظایف زمانبندیشده ساده که نیازی به تکرار ندارند، بسیار کاربردی است.
نیاز به سرویس atd: این ابزار برای کارکرد به سرویس atd وابسته است که باید در سیستم شما در حال اجرا باشد.
نصب و راهاندازی:
نصب:
روی CentOS یا RHEL، دستور زیر را اجرا کنید:
sudo yum install at -y
روی Ubuntu دستور زیر را اجرا کنید:
sudo apt install at -y
فعال کردن سرویس:
سرویس atd را فعال و شروع کنید:
sudo systemctl enable --now atd
زمانبندی یک دستور:
برای مثال:
echo "reboot" | at 11:00
این دستور سرور را در ساعت 11:00 ریاستارت میکند.
مشاهده دستورات زمانبندیشده:
atq
لغو یک تسک:
برای لغو، شماره تسک را از atq پیدا کنید و از دستور زیر استفاده کنید:
atrm <job_number>
چه زمانی از at استفاده کنیم؟
زمانی که نیاز به اجرای یک دستور در زمان مشخص بدون تکرار دارید.
برای وظایف سادهتر که نیازی به فایلهای پیچیده کرونجاب ندارند.
به طور کلی، at گزینهای مفید برای زمانبندی سریع و یکباره دستورات است.
🔥3❤🔥2👍2
ابزاری به نام Velero !
ابزار Velero یک ابزار متنباز برای پشتیبانگیری، بازیابی و انتقال کلسترهای Kubernetes است.
این ابزار به شما کمک میکند تا دادهها و تنظیمات محیط Kubernetes خود را بهطور ایمن ذخیره کنید و در
مواقع نیاز به راحتی بازیابی کنید.
ویژگیهای اصلی Velero شامل:
پشتیبانگیری (Backup): گرفتن بکاپ از منابع Kubernetes و دادههای مرتبط.
بازیابی (Restore): بازگرداندن کل یا بخشی از کلستر به وضعیت قبلی.
انتقال (Migration): انتقال دادهها و تنظیمات بین کلسترهای مختلف در Kubernetes
ابزار Velero از سرویسهای ابری مانند AWS S3، Azure Blob Storage و Google Cloud Storage برای
ذخیرهسازی بکاپها پشتیبانی میکند. همچنین، میتواند با Persistent Volumes کار کند تا دادههای پایدار را نیز در
فرآیند پشتیبانگیری پوشش دهد.
برای مدیران Kubernetes، Velero ابزار بسیار مفیدی است تا در مواقع خرابی یا مهاجرت کلستر،
از دست رفتن دادهها را به حداقل برسانند.
ابزار Velero یک ابزار متنباز برای پشتیبانگیری، بازیابی و انتقال کلسترهای Kubernetes است.
این ابزار به شما کمک میکند تا دادهها و تنظیمات محیط Kubernetes خود را بهطور ایمن ذخیره کنید و در
مواقع نیاز به راحتی بازیابی کنید.
ویژگیهای اصلی Velero شامل:
پشتیبانگیری (Backup): گرفتن بکاپ از منابع Kubernetes و دادههای مرتبط.
بازیابی (Restore): بازگرداندن کل یا بخشی از کلستر به وضعیت قبلی.
انتقال (Migration): انتقال دادهها و تنظیمات بین کلسترهای مختلف در Kubernetes
ابزار Velero از سرویسهای ابری مانند AWS S3، Azure Blob Storage و Google Cloud Storage برای
ذخیرهسازی بکاپها پشتیبانی میکند. همچنین، میتواند با Persistent Volumes کار کند تا دادههای پایدار را نیز در
فرآیند پشتیبانگیری پوشش دهد.
برای مدیران Kubernetes، Velero ابزار بسیار مفیدی است تا در مواقع خرابی یا مهاجرت کلستر،
از دست رفتن دادهها را به حداقل برسانند.
YouTube
Kubernetes Backups, Upgrades, Migrations - with Velero
Follow DevOps Roadmap 👉🏽 https://www.instagram.com/marceldempers
My DevOps Course 👉🏽 https://marceldempers.dev
Patreon 👉🏽http://patreon.com/marceldempers
In todays episode we will be taking a look at a tool that can help you migrate, backup and restore…
My DevOps Course 👉🏽 https://marceldempers.dev
Patreon 👉🏽http://patreon.com/marceldempers
In todays episode we will be taking a look at a tool that can help you migrate, backup and restore…
👍8❤🔥2
(پارت چهارم)
پورت مپینگ در داکر چیست؟
پورت مپینگ در داکر یعنی اتصال پورت داخل کانتینر به یک پورت روی سیستم میزبان، تا کانتینر از بیرون قابل دسترسی باشد.
مثلاً وقتی میخواهید یک وبسایت داخل کانتینر را روی مرورگر باز کنید، با دستور زیر پورت ۸۰ داخل کانتینر را به پورت ۸۰۸۰ روی سیستم وصل میکنید:
اینجا:
۸۰۸۰ = پورت روی سیستم میزبان
۸۰ = پورت داخل کانتینر
حالا وقتی آدرس http://localhost:8080 را باز کنید، به سرویس داخل کانتینر متصل میشوید.
پورت مپینگ در داکر چیست؟
پورت مپینگ در داکر یعنی اتصال پورت داخل کانتینر به یک پورت روی سیستم میزبان، تا کانتینر از بیرون قابل دسترسی باشد.
مثلاً وقتی میخواهید یک وبسایت داخل کانتینر را روی مرورگر باز کنید، با دستور زیر پورت ۸۰ داخل کانتینر را به پورت ۸۰۸۰ روی سیستم وصل میکنید:
docker run -p 8080:80 my-container
اینجا:
۸۰۸۰ = پورت روی سیستم میزبان
۸۰ = پورت داخل کانتینر
حالا وقتی آدرس http://localhost:8080 را باز کنید، به سرویس داخل کانتینر متصل میشوید.
❤6❤🔥2👍1
شلو و دیپ کپی در پایتون مفاهیم کلیدی هستند که تفاوتهای اساسی در کپیبرداری از دادهها را توضیح میدهند.
📚 شلو کپی فقط یک سطح از دادهها را کپی میکند.
🔄 دیپ کپی تمام سطوح و زیر دادهها را به صورت مستقل کپی میکند.
⚠️ تغییرات در شلو کپی بر روی دادههای اصلی تأثیر میگذارد.
🛠️ متد copy برای ایجاد شلو کپی و deepcopy برای دیپ کپی استفاده میشود.
🔍 درک این مفاهیم برای جلوگیری از خطاهای غیرمنتظره در برنامهنویسی ضروری است.
📈 تفاوتهای شلو و دیپ کپی به برنامهنویسان کمک میکند تا کنترل بیشتری بر روی دادهها داشته باشند. درک این تفاوتها میتواند از بروز مشکلات جدی در آینده جلوگیری کند.
🔄 شلو کپی تنها اشارهگرها را کپی میکند، به این معنا که اگر دادههای اصلی تغییر کنند، دادههای کپی شده نیز تحت تأثیر قرار میگیرند. این میتواند به مشکلاتی در هنگام مدیریت دادهها منجر شود.
🌊 دیپ کپی تمام دادهها را به طور مستقل کپی میکند، به این ترتیب هرگونه تغییر در دادههای کپی شده بر روی دادههای اصلی تأثیری نخواهد گذاشت. این ویژگی برای کار با دادههای پیچیده بسیار مفید است.
🔍 استفاده از متد copy و deepcopy در پایتون به برنامهنویسان امکان میدهد تا به راحتی نوع کپیبرداری مورد نظر خود را انتخاب کنند. این انتخاب، بسته به نوع دادهها و نیازهای پروژه میتواند متفاوت باشد.
⚠️ در پروژههای بزرگ و پیچیده، عدم توجه به این مفاهیم میتواند منجر به بروز خطاهای غیرمنتظره و دشواری در عیبیابی شود.
https://youtu.be/_h4lgIcbBH0?si=E8eEDzQLe4n-1N7t
📚 شلو کپی فقط یک سطح از دادهها را کپی میکند.
🔄 دیپ کپی تمام سطوح و زیر دادهها را به صورت مستقل کپی میکند.
⚠️ تغییرات در شلو کپی بر روی دادههای اصلی تأثیر میگذارد.
🛠️ متد copy برای ایجاد شلو کپی و deepcopy برای دیپ کپی استفاده میشود.
🔍 درک این مفاهیم برای جلوگیری از خطاهای غیرمنتظره در برنامهنویسی ضروری است.
📈 تفاوتهای شلو و دیپ کپی به برنامهنویسان کمک میکند تا کنترل بیشتری بر روی دادهها داشته باشند. درک این تفاوتها میتواند از بروز مشکلات جدی در آینده جلوگیری کند.
🔄 شلو کپی تنها اشارهگرها را کپی میکند، به این معنا که اگر دادههای اصلی تغییر کنند، دادههای کپی شده نیز تحت تأثیر قرار میگیرند. این میتواند به مشکلاتی در هنگام مدیریت دادهها منجر شود.
🌊 دیپ کپی تمام دادهها را به طور مستقل کپی میکند، به این ترتیب هرگونه تغییر در دادههای کپی شده بر روی دادههای اصلی تأثیری نخواهد گذاشت. این ویژگی برای کار با دادههای پیچیده بسیار مفید است.
🔍 استفاده از متد copy و deepcopy در پایتون به برنامهنویسان امکان میدهد تا به راحتی نوع کپیبرداری مورد نظر خود را انتخاب کنند. این انتخاب، بسته به نوع دادهها و نیازهای پروژه میتواند متفاوت باشد.
⚠️ در پروژههای بزرگ و پیچیده، عدم توجه به این مفاهیم میتواند منجر به بروز خطاهای غیرمنتظره و دشواری در عیبیابی شود.
https://youtu.be/_h4lgIcbBH0?si=E8eEDzQLe4n-1N7t
YouTube
کپی سطحی و عمیق در پایتون | Shallow and Deep Copy in Python
ویدیو تفاوت is و == در پایتون
https://youtu.be/FNJ2NZxIhfs
من در شبکه های اجتماعی دیگه:
اینستاگرام
https://instagram.com/am.mthri
کانال تلگرام
https://news.1rj.ru/str/mthri_tips
توییتر
https://twitter.com/a_mthri
وبلاگ
https://iamamir.ir
https://youtu.be/FNJ2NZxIhfs
من در شبکه های اجتماعی دیگه:
اینستاگرام
https://instagram.com/am.mthri
کانال تلگرام
https://news.1rj.ru/str/mthri_tips
توییتر
https://twitter.com/a_mthri
وبلاگ
https://iamamir.ir
❤🔥2👍1
This media is not supported in your browser
VIEW IN TELEGRAM
The difference between distracted mind and focused mind!
❤🔥3👍1