حاويات عامل الميناء لا يمكن حل دنس على أوبونتو 14.04 مضيف سطح المكتب

أنا أواجه مشكلة مع حاويات عامل الميناء الخاصة بي على أوبونتو 14.04 لتر.عامل الميناء عملت بشكل جيد لمدة يومين ، ثم فجأة فقدت كل اتصال الشبكة داخل حاويات بلدي. إخراج الخطأ أدناه يؤدي في البداية لي أن أعتقد أنه كان لأن أبت-جيت يحاول حل دنس عبر إيبف 6.

أنا تعطيل إيبف 6 على الجهاز المضيف بلدي ولا يزال ، إزالة جميع الصور ، وسحبت قاعدة أوبونتو ، ولا تزال واجهت المشكلة.

لقد غيرت بلدي / الخ / حل.أسيوط خوادم الأسماء من خادم دنس المحلي إلى خوادم دنس العامة جوجل (8.8.8.8 و 8.8.4.4) ولا تزال لا حظ. أنا أيضا تعيين دنس إلى جوجل في دوكر-أوبتس من /الخ/الافتراضي/دوكر وإعادة تشغيل دوكر.

كما حاولت سحب كوريوس ، و يم لا يمكن حل دنس سواء.

انها غريبة لأنه في حين دنس لا يعمل ، ما زلت الحصول على رد عندما بينغ نفس خوادم التحديث التي أبت-جيت لا يمكن حلها.

أنا لست وراء وكيل ، وأنا على شبكة محلية قياسية جدا ، وهذا الإصدار من أوبونتو هو حتى الآن وجديدة (أنا ركبت قبل يومين لتكون أقرب إلى عامل الميناء).

لقد بحثت بدقة هذا من خلال وظائف أخرى على ستاكوفيرفلو وجيثب القضايا ، ولكن لم يتم العثور على أي قرار. أنا من الأفكار حول كيفية حل هذه المشكلة, يمكن لأي شخص أن يساعد?

رسالة خطأ

➜  arthouse git:(docker) ✗ docker build --no-cache .Sending build context to Docker daemon 51.03 MBSending build context to Docker daemon Step 0 : FROM ubuntu:14.04 ---> 5506de2b643bStep 1 : RUN apt-get update ---> Running in 845ae6abd1e0Err http://archive.ubuntu.com trusty InReleaseErr http://archive.ubuntu.com trusty-updates InReleaseErr http://archive.ubuntu.com trusty-security InRelease   Err http://archive.ubuntu.com trusty-proposed InRelease  Err http://archive.ubuntu.com trusty Release.gpg  Cannot initiate the connection to archive.ubuntu.com:80 (2001:67c:1360:8c01::19). - connect (101: Network is unreachable) [IP: 2001:67c:1360:8c01::19 80]Err http://archive.ubuntu.com trusty-updates Release.gpg  Cannot initiate the connection to archive.ubuntu.com:80 (2001:67c:1360:8c01::19). - connect (101: Network is unreachable) [IP: 2001:67c:1360:8c01::19 80]Err http://archive.ubuntu.com trusty-security Release.gpg  Cannot initiate the connection to archive.ubuntu.com:80 (2001:67c:1360:8c01::19). - connect (101: Network is unreachable) [IP: 2001:67c:1360:8c01::19 80]Err http://archive.ubuntu.com trusty-proposed Release.gpg  Cannot initiate the connection to archive.ubuntu.com:80 (2001:67c:1360:8c01::19). - connect (101: Network is unreachable) [IP: 2001:67c:1360:8c01::19 80]Reading package lists...W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty/InRelease  W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty-updates/InRelease  W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty-security/InRelease  W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty-proposed/InRelease  W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty/Release.gpg  Cannot initiate the connection to archive.ubuntu.com:80 (2001:67c:1360:8c01::19). - connect (101: Network is unreachable) [IP: 2001:67c:1360:8c01::19 80]W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty-updates/Release.gpg  Cannot initiate the connection to archive.ubuntu.com:80 (2001:67c:1360:8c01::19). - connect (101: Network is unreachable) [IP: 2001:67c:1360:8c01::19 80]W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty-security/Release.gpg  Cannot initiate the connection to archive.ubuntu.com:80 (2001:67c:1360:8c01::19). - connect (101: Network is unreachable) [IP: 2001:67c:1360:8c01::19 80]W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty-proposed/Release.gpg  Cannot initiate the connection to archive.ubuntu.com:80 (2001:67c:1360:8c01::19). - connect (101: Network is unreachable) [IP: 2001:67c:1360:8c01::19 80]W: Some index files failed to download. They have been ignored, or old ones used instead.

حاوية إفكونفيغ / بينغ

➜  code  docker run -it ubuntu /bin/bashroot@7bc182bf87bb:/# ifconfigeth0      Link encap:Ethernet  HWaddr 02:42:ac:11:00:04            inet addr:172.17.0.4  Bcast:0.0.0.0  Mask:255.255.0.0          inet6 addr: fe80::42:acff:fe11:4/64 Scope:Link          UP BROADCAST RUNNING  MTU:1500  Metric:1          RX packets:7 errors:0 dropped:0 overruns:0 frame:0          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:1000           RX bytes:738 (738.0 B)  TX bytes:648 (648.0 B)lo        Link encap:Local Loopback            inet addr:127.0.0.1  Mask:255.0.0.0          inet6 addr: ::1/128 Scope:Host          UP LOOPBACK RUNNING  MTU:65536  Metric:1          RX packets:0 errors:0 dropped:0 overruns:0 frame:0          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:0           RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)root@7bc182bf87bb:/# ping google.comPING google.com (74.125.226.0) 56(84) bytes of data.64 bytes from lga15s42-in-f0.1e100.net (74.125.226.0): icmp_seq=1 ttl=56 time=12.3 ms--- google.com ping statistics ---1 packets transmitted, 1 received, 0% packet loss, time 0msrtt min/avg/max/mdev = 12.367/12.367/12.367/0.000 msroot@7bc182bf87bb:/# ping 8.8.8.8PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.64 bytes from 8.8.8.8: icmp_seq=1 ttl=44 time=21.8 ms64 bytes from 8.8.8.8: icmp_seq=2 ttl=44 time=21.7 ms64 bytes from 8.8.8.8: icmp_seq=3 ttl=44 time=21.7 ms

أيضا ، فشل التحديث الرابطة بين الحصول على عندما فرض إيبف 4:

root@6d925cdf84ad:/# sudo apt-get update -o Acquire::ForceIPv4=trueErr http://archive.ubuntu.com trusty InReleaseErr http://archive.ubuntu.com trusty-updates InReleaseErr http://archive.ubuntu.com trusty-security InReleaseErr http://archive.ubuntu.com trusty-proposed InReleaseErr http://archive.ubuntu.com trusty Release.gpg  Unable to connect to archive.ubuntu.com:http: [IP: 91.189.88.153 80]Err http://archive.ubuntu.com trusty-updates Release.gpg  Unable to connect to archive.ubuntu.com:http: [IP: 91.189.88.153 80]Err http://archive.ubuntu.com trusty-security Release.gpg  Unable to connect to archive.ubuntu.com:http: [IP: 91.189.88.153 80]Err http://archive.ubuntu.com trusty-proposed Release.gpg  Unable to connect to archive.ubuntu.com:http: [IP: 91.189.88.153 80]Reading package lists... DoneW: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty/InRelease  

وو ، لقد وجدت وظيفة على جيثب التي حلت مشكلتي.

بعد ستيف ك. وأشار إلى أنه لم يكن في الواقع قضية دنس وكان مشكلة الاتصال، وكنت قادرا على العثور على وظيفة على جيثب التي وصفت كيفية إصلاح هذه المشكلة.

يبدو أن جسر شبكة عامل الميناء 0 تم تعليقه. تثبيت جسر-أوتيلز وتشغيل ما يلي حصلت على عامل الميناء في العمل من أجل:

apt-get install bridge-utilspkill dockeriptables -t nat -Fifconfig docker0 downbrctl delbr docker0service docker restart

إذا كانت مشكلة حل نظام أسماء النطاقات ، فإليك الحل:

يتم تشغيل أول شيء للتحقق cat /etc/resolv.conf في ال حاوية عامل الميناء. إذا كان يحتوي على خادم دنس غير صالح ، مثل nameserver 127.0.x.x، ثم الحاوية لن تكون قادرة على حل أسماء النطاقات في عناوين إب ، لذلك ping google.com سوف تفشل.

يتم تشغيل الشيء الثاني للتحقق cat /etc/resolv.conf على ال الجهاز المضيف. عامل الميناء ينسخ أساسا المضيف /etc/resolv.conf إلى الحاوية في كل مرة يتم فيها تشغيل الحاوية. لذلك إذا كان المضيف /etc/resolv.conf هو خطأ ، ثم لذلك سوف حاوية عامل الميناء.

إذا وجدت أن المضيف /etc/resolv.conf غير صحيح ، ثم لديك 2 خيارات:

  1. هاردكود ملقم دنس في الخفي.(جسون). هذا أمر سهل ، ولكن ليس مثاليا إذا كنت تتوقع تغيير خادم دنس.

  2. إصلاح المضيفين /etc/resolv.conf. هذا هو اصعب قليلا ، ولكن يتم إنشاؤه بشكل حيوي ، وأنت لا هاردكودينغ ملقم دنس.


1. خادم نظام أسماء النطاقات هاردكود في عامل الميناء الخفي.جسون

  • تحرير /etc/docker/daemon.json

    {    "dns": ["10.1.2.3", "8.8.8.8"]}
  • إعادة تشغيل البرنامج الخفي عامل الميناء لتلك التغييرات نافذة المفعول:
    sudo systemctl restart docker

  • الآن عند تشغيل / بدء حاوية ، سوف عامل الميناء ملء /etc/resolv.conf مع القيم من daemon.json.


2. إصلاح المضيفين /etc/resolv.conf

أ. أوبونتو 16.04 وما قبله

  • لأوبونتو 16.04 والإصدارات السابقة, /etc/resolv.conf تم إنشاؤه ديناميكيا بواسطة مدير الشبكة.

  • التعليق خارج الخط dns=dnsmasq (مع أ #) في /etc/NetworkManager/NetworkManager.conf

  • إعادة تشغيل نيتوركماناجر لتجديد /etc/resolv.conf :
    sudo systemctl restart network-manager

  • تحقق على المضيف: cat /etc/resolv.conf

ب. أوبونتو 18.04 وما بعده

  • أوبونتو 18.04 تغيير لاستخدام systemd-resolved لتوليد /etc/resolv.conf. الآن افتراضيا يستخدم ذاكرة التخزين المؤقت دنس المحلية 127.0.0.53. وهذا لن يعمل داخل حاوية ، لذلك سوف دوكر الافتراضي إلى خادم دنس 8.8.8.8 جوجل ، والتي قد كسر للناس وراء جدار الحماية.

  • /etc/resolv.conf هو في الواقع ارتباط رمزي (ls -l /etc/resolv.conf) مما يشير إلى /run/systemd/resolve/stub-resolv.conf (127.0.0.53) افتراضيا في أوبونتو 18.04.

  • مجرد تغيير الارتباط الرمزي للإشارة إلى /run/systemd/resolve/resolv.conf، الذي يسرد خوادم نظام أسماء النطاقات الحقيقية:
    sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

  • تحقق على المضيف: cat /etc/resolv.conf

الآن يجب أن يكون لديك صالح /etc/resolv.conf على المضيف لعامل الميناء لنسخ في الحاويات.

في محاولة لإضافة قيمة إضافية إلى مشكلة واجهتها أيضا ؛ مع إجابة بديلة:

كانت شبكتي ذات صلة بالمكتب وتم حظر إعدادات نظام أسماء النطاقات جوجل بحيث يمكن للحاوية بينغ عناوين إب ولكن ليس أسماء النطاقات.

مضيفي /etc/resolv.conf بدا في الأصل مثل;

#Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)#DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTENnameserver 127.0.1.1search companyDomain.co.za

ويرجع ذلك إلى مدير الشبكة القيام بنوع من اخفاء تفاصيل خادم دنس.

للأسف وفقا ل كتيبات عامل الميناء سوف عامل الميناء تصفية أي عناوين إب لوكالهوست عند بناء حل الحاوية.أسيوط واستبدالها مع إبس دنس جوجل. وهو ما تسبب في حالتي في حظر أسماء النطاقات.

كان علي أن:

  • إعادة تعيين بلدي /etc/default/docker إلى الافتراضي حتى حاويات استخدام حل المضيف الخاص بي.محتوى أسيوط بدلا من ذلك.
  • تحرير /etc/NetworkManager/NetworManager.conf والتعليق خارج الخط dns=dnsmasq. هذا هو حتى نم يمكن تحديد عناوين إب دنس الفعلية بدلا من 127.0.0.1.
  • إعادة تشغيل نانومتر مع sudo service network-manager restart.
  • إعادة تشغيل خدمة عامل الميناء مع sudo service docker restart.

تشغيل حاوية ثم تسمح لها أن تفعل apt-get update/upgrade، على سبيل المثال.

عامل الميناء وثيقة رسمية يعطي أدوات لتكوين ملقم دنس للاستخدام من قبل عامل الميناء

  1. افتح ال /etc/default/docker ملف للتحرير:

    sudo nano /etc/default/docker
  2. إضافة إعداد لعامل الميناء:

    DOCKER_OPTS="--dns 8.8.8.8"
  3. استبدال 8.8.8.8 مع خادم دنس محلي مثل 192.168.1.1. يمكنك أيضا تحديد خوادم دنس متعددة. فصلهم بمسافات ، على سبيل المثال:

    --dns 8.8.8.8 --dns 192.168.1.1

    تحذير: إذا كنت تقوم بذلك على جهاز كمبيوتر محمول يتصل بشبكات مختلفة ، فتأكد من اختيار خادم نظام أسماء النطاقات العام.

    بس: nm-tool يمكن استخدامها للتحقق من خادم دنس المضيف المحلي

  4. حفظ وإغلاق الملف.

  5. إعادة تشغيل الخفي عامل الميناء.

    sudo service docker restart

خطأك هنا:

 Cannot initiate the connection to archive.ubuntu.com:80 (2001:67c:1360:8c01::19). connect (101: Network is unreachable) [IP: 2001:67c:1360:8c01::19 80]

هذا ليس خطأ مع دنس ، بدلا من ذلك النظام الخاص بك يحاول الاتصال المضيفين إيبف 6 والفشل . ربما لأنك لم يكن لديك الوصول إيبف 6 على المضيف الخاص بك. ينجح البحث الفعلي عن عنوان آي بي في 6. (مرآة أوبونتو / الأرشيف متاح على كل من إيبف 6 و إيبف 4. كنت محظوظا بما فيه الكفاية لضرب إيبف 6 واحد لأن النظام الخاص بك يعتقد أنه يجب أن تعمل.)

يجب عليك إما إصلاح ذلك ، من خلال تركيب ميريدو، أو أعد المحاولة حتى تصل إلى مرآة آي بي في 4.

مرة أخرى الشيء المهم أن ندرك هنا هو أن دنس ليس اللوم ، كما ترون من قبل اختبارات بينغ الخاصة بك.

للقراء الآخرين الذين يأتون إلى هنا أثناء استخدام بوت 2دوكر ، وهنا هو كيف أنا ثابتة. في الواقع ، فإن الجواب أعلاه أشار لي إلى الاتجاه الصحيح.

في الأساس ، لسبب الحاويات داخل بوت2دوكر لا يمكن حل أسماء المضيفين.

لذلك أنا فقط إعادة تشغيل بوت2دوكر وبدأت الحاويات. الآن يمكن حل أسماء المضيفين بشكل صحيح مرة أخرى.

أفترض أن المشكلة بدأت بوت2دوكر في حين أن الشبكة على المضيف كان متصلا مما تسبب بوت2دوكر لبدء والدخول في حالة غير العاملة.

واجهت هذه المشكلة عندما سمحت المثبت أوبونتو لتثبيت حزمة عامل الميناء المفاجئة. عندما تخلت عن ذلك وتحولت إلى حزمة عامل الميناء الرسمية ، حلت المشكلة نفسها.

sudo snap remove dockercurl -fsSL https://get.docker.com -o get-docker.shsh get-docker.sh

افتح الملف /lib/systemd/system/docker.service

في ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sockأضف
--dns 8.8.8.8

مثل هذا:

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --dns 8.8.8.8

إعادة تشغيل خدمة عامل الميناء

كان لي نفس المشكلة على ويندوز. هذا الأمر جعلها تعمل بالنسبة لي: docker-machine restart

كان لديه مشكلة مماثلة ، ولكن أيضا حل الاسم بين الحاويات داخل شبكة محددة من قبل المستخدم يبدو أنه غير مستقر بعض الشيء. البعض لا يستطيع حل أي شيء مثلك.

كانت القضية انتقلت / فار/ليب / عامل الميناء. لأسباب الفضاء تم تركيبه عبر نفس. تؤدي إضافة نظام ملفات محلي ونقل الملفات هناك إلى حل المشكلة.

بالنسبة لي ، عملت بعد إعادة التشغيل.