محدودیت دسترسی به Docker میتواند فرایند توسعه، دریافت وابستگیها یا استفاده از ابزارهای مرتبط را مختل کند. در این راهنما تنظیم شکن، دامنههای لازم و روش آزمایش تحریم شکن برای Docker را با نمونه عملی توضیح میدهیم.
Docker یکی از ابزارهای مهم در توسعه نرمافزار است که به برنامهنویسان کمک میکند برنامهها و وابستگیهای آنها را در محیطهای ایزوله اجرا کنند. بسیاری از توسعهدهندگان برای راهاندازی پروژهها، دریافت ایمیجهای آماده و ساخت محیط توسعه از Docker و مخزن آنلاین Docker Hub استفاده میکنند.
بااینحال، ممکن است هنگام استفاده از Docker با خطاهایی مانند باز نشدن Docker Hub، دریافت نشدن ایمیجها، خطای اتصال به رجیستری یا مشکل در اجرای دستور docker pull مواجه شوید. این مشکلات همیشه یک علت ندارند و ممکن است به DNS، تنظیمات شبکه، پروکسی، احراز هویت یا محدودیت دریافت ایمیج مربوط باشند.
اگر احتمال میدهید مشکل از DNS باشد، میتوانید تنظیم DNS شکن را امتحان کنید. این روش ممکن است در برخی شرایط به برقراری اتصال کمک کند؛ اما برای رفع تمام خطاهای Docker کافی نیست.
در این راهنما، روش استفاده از DNS شکن برای Docker، تنظیم DNS در سیستمعاملهای مختلف و راهکارهای عیبیابی مشکلات رایج داکر را بررسی میکنیم.

Docker چیست و چه کاربردی دارد؟
Docker پلتفرمی برای ساخت، اجرا و مدیریت کانتینرهاست. کانتینر به شما امکان میدهد برنامه را همراه با وابستگیهای موردنیاز آن در یک محیط مشخص اجرا کنید؛ در نتیجه، راهاندازی و انتقال پروژه میان محیطهای توسعه و استقرار سادهتر میشود.
از مهمترین کاربردهای Docker میتوان به موارد زیر اشاره کرد:
-
راهاندازی محیط توسعه: اجرای زبانهای برنامهنویسی، پایگاههای داده و ابزارهای موردنیاز پروژه.
-
دریافت ایمیجهای آماده: استفاده از ایمیجهایی مانند Nginx، PostgreSQL، Redis و Python.
-
ساخت ایمیج اختصاصی: آمادهسازی محیط اجرای برنامه با استفاده از Dockerfile.
-
اجرای چند سرویس: مدیریت سرویسهای مختلف یک پروژه با ابزارهایی مانند Docker Compose.
-
توسعه و استقرار نرمافزار: نزدیکتر کردن محیط توسعه به محیط اجرا.
-
مدیریت ایمیجها و کانتینرها: دریافت، ساخت، اجرا و انتشار ایمیجهای نرمافزاری.
برای استفاده از بسیاری از این قابلیتها، به Docker Hub یا یک رجیستری دیگر نیاز دارید. اگر ارتباط با رجیستری برقرار نشود، ممکن است نتوانید ایمیج موردنظر را دریافت کنید؛ حتی اگر خود Docker روی رایانه بهدرستی نصب شده باشد.
Docker Hub چیست و چه تفاوتی با Docker دارد؟
Docker نام پلتفرم و مجموعه ابزارهای کانتینرسازی است، اما Docker Hub یکی از رجیستریهای آنلاین مورد استفاده برای نگهداری و دریافت ایمیجهای Docker محسوب میشود.
برای مثال، وقتی دستور زیر را اجرا میکنید، Docker تلاش میکند ایمیج رسمی Nginx را از رجیستری پیشفرض دریافت کند:
docker pull nginx
در این فرایند، Docker Engine باید بتواند با رجیستری ارتباط برقرار کند و لایههای ایمیج را دانلود کند. بنابراین، مشکل در دریافت ایمیج لزوماً به معنی خرابی نصب Docker نیست.
برای بررسی نسخه وب، میتوانید به Docker Hub مراجعه کنید. اگر سایت باز میشود اما دستور docker pull خطا میدهد، باید ارتباط Docker Engine با رجیستری را نیز بررسی کنید.
چرا Docker Hub باز نمیشود یا ایمیج دانلود نمیشود؟
خطاهای Docker میتوانند در مراحل مختلف رخ دهند. تشخیص مرحلهای که مشکل در آن ایجاد شده است، به انتخاب راهکار مناسب کمک میکند.
۱. اختلال در DNS
Docker برای برقراری ارتباط با رجیستریها باید نام دامنههای موردنیاز را به آدرس IP تبدیل کند. اگر DNS نتواند نام میزبان را شناسایی کند، ممکن است دریافت ایمیج با خطایی مانند no such host مواجه شود.
در این شرایط، بررسی DNS سیستم و امتحان کردن یک سرویس جایگزین میتواند مفید باشد. بااینحال، باید توجه داشت که DNS سیستم میزبان و DNS مورد استفاده کانتینرها دو موضوع مرتبط اما متفاوت هستند.
۲. محدودیت شبکه یا پروکسی
اگر شبکه شما ارتباط با رجیستری را محدود کند، ممکن است درخواستهای Docker با خطای Timeout یا قطع اتصال مواجه شوند.
همچنین در بعضی محیطها، مانند شبکههای سازمانی، لازم است پروکسی برای خود Docker Engine تنظیم شود. تغییر DNS بهتنهایی جایگزین تنظیم پروکسی نیست.
۳. مشکل احراز هویت
برای بعضی ایمیجها یا عملیات مربوط به مخزنهای خصوصی، باید وارد حساب کاربری شوید. اگر اعتبارنامهها نامعتبر باشند یا مجوز لازم را نداشته باشید، دریافت ایمیج ممکن است با خطا مواجه شود.
در این وضعیت، پیام خطا و وضعیت حساب را بررسی کنید. تغییر DNS نمیتواند مجوز دسترسی به یک مخزن خصوصی ایجاد کند.
۴. محدودیت تعداد درخواستها
Docker Hub برای دریافت ایمیجها محدودیتهایی در نظر میگیرد. اگر تعداد درخواستها از حد مجاز بیشتر شود، ممکن است پاسخ 429 Too Many Requests یا پیام مربوط به محدودیت دریافت ایمیج نمایش داده شود.
این خطا با مشکل DNS متفاوت است. بسته به شرایط، ورود به حساب و بررسی محدودیتهای سرویس میتواند به تشخیص و رفع مشکل کمک کند.
۵. اختلال موقت رجیستری یا ارتباط اینترنت
گاهی مشکل از خود سرویس یا کیفیت اتصال اینترنت است. اگر دریافت ایمیجها در چند پروژه با مشکل مواجه شده، وضعیت سرویس و ارتباط اینترنت را بررسی کنید.
در صورت اختلال موقت، تغییر مکرر DNS یا نصب مجدد Docker لزوماً کمکی نمیکند.
آیا تحریم شکن برای Docker کاربرد دارد؟
شکن یک سرویس DNS است که میتوانید برای بررسی مشکلات احتمالی مربوط به DNS از آن استفاده کنید. اگر Docker در شناسایی نام دامنه رجیستری با مشکل مواجه شده باشد، تغییر DNS ممکن است به برقراری اتصال کمک کند.
بااینحال، باید میان سه بخش تفاوت قائل شوید:
-
Docker Hub: وبسایتی که میتوانید برای جستوجو و مشاهده ایمیجها از آن استفاده کنید.
-
Docker Engine: بخشی که عملیات دریافت ایمیج و اجرای کانتینرها را انجام میدهد.
-
DNS کانتینرها: تنظیماتی که روی حل نام دامنهها از داخل کانتینرها اثر میگذارند.
تغییر DNS سیستم ممکن است برای برخی مشکلات دسترسی میزبان مفید باشد، اما لزوماً تمام تنظیمات DNS مربوط به Docker Engine و کانتینرها را تغییر نمیدهد.
اگر قصد دارید DNS شکن را امتحان کنید، ابتدا DNS سیستم را تنظیم کنید و سپس دستور docker pull hello-world را اجرا کنید. اگر مشکل همچنان باقی بود، متن خطا را بررسی کنید تا مشخص شود مسئله به DNS، پروکسی، احراز هویت یا محدودیت دریافت ایمیج مربوط است.
آدرس DNS شکن رایگان و حرفهای برای Docker
برای بررسی مشکلات احتمالی DNS میتوانید از مقادیر زیر استفاده کنید.
این آدرسها را میتوانید در بخش DNS تنظیمات شبکه سیستمعامل وارد کنید. اگر از Docker Engine روی لینوکس استفاده میکنید، ممکن است لازم باشد تنظیمات DNS خود Docker را نیز بررسی کنید.
پس از اعمال تغییرات، اتصال اینترنت را بررسی کنید و دستور دریافت یک ایمیج عمومی را دوباره اجرا کنید.
نکته: تغییر DNS بهتنهایی دسترسی به Docker Hub یا تمام رجیستریها را تضمین نمیکند. اگر مشکل ناشی از محدودیت شبکه، پروکسی، احراز هویت یا محدودیت تعداد درخواستها باشد، باید همان عامل را بررسی کنید.
آموزش تنظیم DNS شکن برای Docker در ویندوز
اگر از Docker Desktop روی ویندوز استفاده میکنید، ابتدا DNS شبکه ویندوز را بررسی کنید. این کار برای تشخیص مشکلات احتمالی DNS سیستم میزبان مفید است.
مراحل کلی در ویندوز ۱۰ و ویندوز ۱۱ به این صورت است:
۱. وارد Settings شوید.
۲. بخش Network & Internet را باز کنید.
۳. اتصال فعال خود، مانند Wi-Fi یا Ethernet، را انتخاب کنید.
۴. بخش تنظیمات DNS را پیدا کنید.
۵. حالت ویرایش را روی Manual قرار دهید و IPv4 را فعال کنید.
۶. آدرس DNS اول و دوم شکن را وارد کنید.
۷. تغییرات را ذخیره کنید.
۸. اتصال اینترنت را بررسی کنید و Docker Desktop را دوباره آزمایش کنید.
پس از اعمال تنظیمات، ترمینال را باز کنید و دستور زیر را اجرا کنید:
docker pull hello-world
اگر ایمیج دریافت شد، ارتباط با رجیستری در این آزمایش برقرار شده است. اگر همچنان خطا دارید، متن خطا را بررسی کنید. در Docker Desktop، تنظیمات شبکه و پروکسی خود برنامه نیز ممکن است اهمیت داشته باشند.
برای مشاهده آموزش کامل تنظیم DNS ویندوز، به صفحه تحریم شکن برای ویندوز مراجعه کنید.
تنظیم DNS شکن برای Docker در مک
اگر از Docker Desktop در macOS استفاده میکنید، میتوانید DNS شبکه را از تنظیمات سیستم بررسی کنید.
۱. وارد System Settings شوید.
۲. بخش Network را باز کنید.
۳. اتصال فعال، مانند Wi-Fi، را انتخاب کنید.
۴. وارد بخش DNS شوید.
۵. آدرسهای DNS شکن را اضافه کنید.
۶. تغییرات را ذخیره کنید.
۷. Docker Desktop را باز کنید و دریافت یک ایمیج عمومی را آزمایش کنید.
اگر همچنان مشکل دارید، بخش تنظیمات پروکسی Docker Desktop را نیز بررسی کنید. تنظیمات پروکسی خود برنامه ممکن است با تنظیمات عمومی شبکه تفاوت داشته باشد.
برای آموزش جزئیات بیشتر، راهنمای تحریم شکن برای مک را مطالعه کنید.
تنظیم DNS شکن برای Docker در لینوکس
در لینوکس، روش تنظیم DNS به توزیع، ابزار مدیریت شبکه و نوع نصب Docker بستگی دارد. اگر از Docker Engine استفاده میکنید، ممکن است لازم باشد DNS سیستم یا تنظیمات خود Docker را بررسی کنید.
بررسی DNS سیستم
ابتدا اتصال اینترنت و تنظیمات DNS سیستمعامل را بررسی کنید. اگر DNS سیستم بهدرستی کار نمیکند، تغییر آن از طریق تنظیمات شبکه میتواند نخستین مرحله عیبیابی باشد.
برای آشنایی با روش تنظیم DNS در توزیعهای مختلف، راهنمای تحریم شکن برای لینوکس را ببینید.
تنظیم DNS برای Docker Engine
اگر مشکل به DNS مورد استفاده کانتینرها مربوط باشد، در بعضی نصبهای Docker Engine میتوان تنظیمات را در فایل daemon.json بررسی کرد. مسیر رایج این فایل در نصبهای معمول لینوکس به شکل زیر است:
/etc/docker/daemon.json
برای نمونه، ساختار تنظیم DNS در این فایل میتواند به شکل زیر باشد:
{
"dns": ["178.22.122.100", "185.51.200.2"]
}
این نمونه صرفاً برای نشان دادن ساختار تنظیم است. اگر فایل شما از قبل تنظیمات دیگری دارد، آنها را حذف نکنید؛ باید تنظیم جدید را با ساختار موجود ادغام کنید و معتبر بودن قالب JSON را بررسی کنید.
همچنین توجه کنید که تنظیم dns در Docker Engine عمدتاً برای DNS مورد استفاده کانتینرهاست. این تنظیم الزاماً مشکل ارتباط خود Docker daemon با Docker Hub را حل نمیکند. اگر خطای docker pull ناشی از پروکسی یا ارتباط رجیستری باشد، باید تنظیمات مربوط به همان بخش را بررسی کنید.
پس از تغییر فایل، پیکربندی را با دقت بررسی کنید. در نصبهای مبتنی بر systemd، راهاندازی مجدد سرویس Docker ممکن است لازم باشد؛ این کار میتواند روی کانتینرهای در حال اجرا اثر بگذارد، بنابراین پیش از انجام آن وضعیت سرویسهای خود را بررسی کنید.
برای جزئیات فنی بیشتر، مستندات رسمی تنظیم DNS در Docker Engine را مطالعه کنید.
رفع خطاهای رایج Docker و Docker Hub
جدول زیر به شما کمک میکند خطاهای رایج را از یکدیگر تشخیص دهید.
| خطا یا مشکل | علت احتمالی | راهکار پیشنهادی |
|---|---|---|
no such host |
مشکل DNS یا نام میزبان اشتباه | نام میزبان و DNS سیستم را بررسی کنید. |
i/o timeout |
اختلال شبکه، پروکسی یا پاسخندادن سرور | اتصال اینترنت و تنظیمات پروکسی را بررسی کنید. |
connection refused |
رد شدن اتصال توسط مقصد یا سرویس | آدرس رجیستری، پورت و دسترسی شبکه را بررسی کنید. |
unauthorized |
ورود انجام نشده یا اعتبارنامه معتبر نیست | وضعیت ورود و مجوز دسترسی را بررسی کنید. |
denied |
نداشتن مجوز برای دریافت ایمیج یا دسترسی به مخزن | نام ایمیج، خصوصی بودن مخزن و مجوز حساب را بررسی کنید. |
429 Too Many Requests |
رسیدن به محدودیت درخواستها | محدودیت دریافت ایمیج را بررسی کنید و در صورت نیاز وارد حساب شوید. |
TLS handshake timeout |
مشکل ارتباط امن یا تأخیر شبکه | اتصال، پروکسی و وضعیت رجیستری را بررسی کنید. |
سایت باز میشود اما docker pull خطا میدهد |
تفاوت مسیر ارتباط مرورگر و Docker Engine | تنظیمات Docker، DNS، پروکسی و متن خطا را بررسی کنید. |
docker pull با خطا مواجه میشود، متن کامل خطا و تنظیمات شبکه و پروکسی Docker را بررسی کنید؛ تغییر DNS بهتنهایی همه خطاها را برطرف نمیکند.اگر Docker Hub باز میشود اما دستور docker pull کار نمیکند
این حالت یکی از مشکلاتی است که ممکن است کاربران را به اشتباه به تغییر DNSهای مختلف سوق دهد. مرورگر و Docker Engine الزاماً از مسیر ارتباطی و تنظیمات یکسانی استفاده نمیکنند؛ بنابراین، باز شدن سایت Docker Hub بهتنهایی نشان نمیدهد که دریافت ایمیج هم باید موفق باشد.
برای بررسی، ابتدا دستور زیر را اجرا کنید:
docker pull hello-world
اگر دریافت ایمیج با موفقیت انجام شد، میتوانید یک ایمیج مشخص موردنیاز پروژه خود را آزمایش کنید. اما اگر خطا دریافت کردید، متن کامل آن را نگه دارید.
-
اگر خطا به پیدا نشدن نام میزبان اشاره میکند، DNS را بررسی کنید.
-
اگر خطا از Timeout یا قطع اتصال خبر میدهد، شبکه و تنظیمات پروکسی را بررسی کنید.
-
اگر خطا شامل
unauthorizedیاdeniedاست، احراز هویت و مجوز مخزن را بررسی کنید. -
اگر پاسخ
429دریافت میکنید، احتمالاً با محدودیت تعداد درخواستها مواجه شدهاید.
این روش کمک میکند بدون تغییر بیدلیل تنظیمات، علت مشکل را دقیقتر مشخص کنید.
آیا برای Docker باید پروکسی تنظیم کرد؟
پاسخ به وضعیت شبکه شما بستگی دارد. اگر ارتباط مستقیم Docker Engine با رجیستری برقرار نمیشود و شبکه شما نیازمند پروکسی است، ممکن است لازم باشد تنظیمات پروکسی برای خود Docker انجام شود.
در Docker Desktop، تنظیمات پروکسی را میتوانید از بخش Settings برنامه بررسی کنید. در نصبهای مستقل Docker Engine، روش تنظیم به سیستمعامل و نحوه اجرای سرویس بستگی دارد.
توجه داشته باشید که تنظیم پروکسی برای مرورگر یا ترمینال لزوماً به معنی اعمال همان تنظیمات روی Docker daemon نیست. همچنین استفاده از آدرس پروکسی نامعتبر میتواند باعث ایجاد خطاهای اتصال جدید شود.
برای آشنایی با روش رسمی تنظیم پروکسی، مستندات پیکربندی پروکسی برای Docker daemon را ببینید.
آیا DNS شکن سرعت دانلود ایمیجهای Docker را افزایش میدهد؟
تغییر DNS بهطور مستقیم سرعت دانلود ایمیج را افزایش نمیدهد. DNS وظیفه شناسایی نام دامنه را بر عهده دارد، درحالیکه سرعت دریافت ایمیج به عواملی مانند کیفیت اینترنت، مسیر ارتباطی، اندازه ایمیج، وضعیت رجیستری و محدودیتهای سرویس بستگی دارد.
اگر مشکل از شناسایی نام دامنه باشد، تغییر DNS ممکن است به برقراری اتصال کمک کند. اما اگر دانلود به دلیل سرعت پایین اینترنت، محدودیت درخواستها یا اختلال ارتباط با رجیستری کند شده باشد، باید همان عامل را بررسی کنید.
برای عیبیابی بهتر، ابتدا یک ایمیج کوچک و عمومی را امتحان کنید و نتیجه را با ایمیج موردنظر خود مقایسه کنید.
پرسشهای متداول درباره تحریم شکن برای Docker
آیا DNS شکن برای باز کردن Docker Hub کاربرد دارد؟
اگر مشکل دسترسی به Docker Hub ناشی از DNS باشد، تغییر DNS ممکن است کمک کند. بااینحال، دسترسی به رجیستری به وضعیت شبکه، تنظیمات Docker و شرایط سرویس نیز بستگی دارد.
چرا Docker Hub باز میشود اما ایمیج دانلود نمیشود؟
ممکن است Docker Engine نتواند به رجیستری متصل شود یا خطا به احراز هویت، پروکسی، DNS یا محدودیت تعداد درخواستها مربوط باشد. متن خطای دستور docker pull را بررسی کنید تا علت احتمالی مشخص شود.
آیا تغییر DNS ویندوز برای Docker Desktop کافی است؟
برای بعضی مشکلات DNS سیستم میزبان ممکن است کافی باشد؛ اما تمام خطاهای Docker Desktop از DNS ویندوز ناشی نمیشوند. اگر مشکل باقی ماند، تنظیمات شبکه و پروکسی Docker Desktop را نیز بررسی کنید.
آیا DNS کانتینرها با DNS سیستم فرق دارد؟
بله. تنظیم DNS سیستم میزبان و DNS مورد استفاده کانتینرها به هم مرتبط هستند، اما یکسان نیستند. ممکن است سیستم بتواند دامنهای را شناسایی کند، اما کانتینرها به دلیل تنظیمات شبکه یا DNS خودشان با مشکل مواجه شوند.
آیا DNS شکن خطای unauthorized را برطرف میکند؟
معمولاً خیر. این خطا اغلب به احراز هویت یا مجوز دسترسی مربوط است. باید وضعیت ورود، اعتبارنامهها و دسترسی به ایمیج را بررسی کنید.
خطای 429 Too Many Requests در Docker به چه معناست؟
این خطا معمولاً به محدودیت تعداد درخواستهای دریافت ایمیج مربوط میشود. بررسی محدودیتهای Docker Hub و ورود به حساب در صورت نیاز میتواند به تشخیص مشکل کمک کند. تغییر DNS بهتنهایی محدودیت درخواستها را برطرف نمیکند.
آیا میتوان DNS شکن را فقط برای Docker تنظیم کرد؟
بسته به نوع نصب، میتوان برخی تنظیمات DNS را در Docker Engine یا تنظیمات شبکه کانتینرها مدیریت کرد. بااینحال، DNS موردنیاز کانتینرها با DNS ارتباط خود Docker daemon با رجیستری یکسان نیست و باید بر اساس نوع خطا تنظیم شود.
جمعبندی
اگر هنگام استفاده از Docker با مشکل باز نشدن Docker Hub یا دریافت ایمیج مواجه هستید، ابتدا مشخص کنید خطا در کدام مرحله رخ میدهد. مشکل DNS، خطای پروکسی، احراز هویت و محدودیت دریافت ایمیج راهکارهای متفاوتی دارند.
شکن میتواند یکی از گزینههای آزمایش برای مشکلات مرتبط با DNS باشد. ابتدا DNS سیستم خود را بررسی کنید و در صورت نیاز، مقادیر DNS شکن را وارد کنید. سپس دستور docker pull hello-world را اجرا کنید تا وضعیت اتصال به رجیستری را بسنجید.
اگر مشکل برطرف نشد، متن خطا و تنظیمات Docker Engine یا Docker Desktop را بررسی کنید. برای راهنمایی دقیقتر میتوانید از مستندات رسمی Docker درباره دریافت ایمیجها، تنظیم DNS در Docker و پیکربندی پروکسی استفاده کنید.
برای تنظیم DNS در سیستمعاملهای مختلف نیز میتوانید راهنماهای تحریم شکن برای ویندوز، تحریم شکن برای مک و تحریم شکن برای لینوکس را مطالعه کنید.