كيف يمكنني فضح أبي عامل الميناء عبر تكب?

أنا باستخدام بورتينر وأنا غير قادر على إدارة نقاط النهاية البعيدة. حاولت استخدام سطر الأوامر للاتصال بعقد عامل الميناء عن بعد ، ولكن حصلت على رسالة Cannot connect to the Docker daemon at tcp://<remote_ip>:<port>. Is the docker daemon running?.

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

أنا تعديل /etc/default لإضافة / إلغاء التعليق DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"

أنا أيضا تعديل /etc/init.d/docker و /etc/init/docker.conf لتشمل DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock".

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

ماذا فاتني? ما التكوين في ما ملف يعرض أبي عبر تكب?

user@hostname:~$ docker -H tcp://<REMOTE_IP>:2375 infoCannot connect to the Docker daemon at tcp://<REMOTE_IP>:2375. Is the docker daemon running?user@hostname:~$ docker -H tcp://127.0.0.1:2375 infoCannot connect to the Docker daemon at tcp://127.0.0.1:2375. Is the docker daemon running?user@hostname:~$ docker -H tcp://<LOCAL_IP>:2375 infoCannot connect to the Docker daemon at tcp://<LOCAL_IP>:2375. Is the docker daemon running?user@hostname:~$

تحرير:تشغيل ps aux | grep -i docker إرجاع هذا -

root      3581  0.1  0.2 596800 41540 ?        Ssl  04:17   0:35 /usr/bin/dockerd -H fd://root      3588  0.0  0.0 653576 14492 ?        Ssl  04:17   0:18 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim docker-containerd-shim --runtime docker-runc

لقد وجدت حلا بفضل منشور إيفان كريزسان.

اضطررت إلى تحرير /lib/systemd/system/docker.service على نظام أوبونتو 16.04.2 لتر لتعديل الخط

ExecStart=/usr/bin/docker daemon -H fd:// -H tcp://0.0.0.0:

ثم

sudo systemctl daemon-reloadsudo systemctl restart docker.service

وعملت كل شيء: -). والخطوة التالية هي معرفة كيفية حماية نموذج الخفي عامل الميناء يجري اختطافها.

الدليل / الخ / الافتراضي هو المكان الذي يضع فيه مشرفو التوزيع ملفات التكوين الخاصة بهم. إذا قمت بتثبيت عامل الميناء مباشرة من مستودعات عامل الميناء ، لن يتم استخدام هذا الدليل.

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

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

[Service]ExecStart=ExecStart=/usr/bin/dockerd

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

{"debug": false,"experimental": true,"hosts": ["fd://", "tcp://0.0.0.0:2376"],"labels": ["foo=bar", "fez=baz"],"log-driver": "json-file","log-opts": {"max-size": "10m", "max-file": "3"},"storage-driver": "overlay2","tlscacert": "/etc/docker/certs/ca.pem","tlscert": "/etc/docker/certs/host-cert.pem","tlskey": "/etc/docker/certs/host-key.pem","tlsverify": true}

لأغراضك ، ما عليك سوى الخط الموجود هناك لتعيين المضيفين.

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

يمكن العثور على التفاصيل الكاملة حول كيفية تكوين مفاتيح تلس للعميل والخادم في:https://docs.docker.com/engine/security/https/


لاحظ أنه مع إصدارات عامل الميناء 18.09 وما فوق على العميل (على حد سواء حيث تقوم بتشغيل الأمر الخاص بك والعقدة البعيدة) ، يمكنك استخدام سش بدلا من تكوين تلس. وهذا ينطوي على استخدام DOCKER_HOST قيمة ssh://user@host. على سبيل المثال.

docker -H ssh://user@host container ls

هناك وثائق رسمية تصف كيفية تكوين حيث يستمع الخفي عامل الميناء للاتصالات.

سيستيمد مقابل الشيطان.جسون

تكوين عامل الميناء للاستماع للاتصالات باستخدام كل من ملف وحدة سيستم دي والخفي.ملف جسون يسبب تعارض يمنع عامل الميناء من البدء.

تكوين الوصول عن بعد مع ملف وحدة سيستم دي

  1. استخدم الأمر سودو سيستمكتل تحرير عامل الميناء.خدمة لفتح ملف تجاوز لعامل الميناء.الخدمة في محرر نصوص.

  2. إضافة أو تعديل الأسطر التالية ، واستبدال القيم الخاصة بك.

    [Service]ExecStart=ExecStart=/usr/bin/dockerd -H fd:// -H tcp://127.0.0.1:2375
  3. احفظ الملف.

  4. إعادة تحميل تكوين سيستمكتل.

    $ sudo systemctl daemon-reload
  5. إعادة تشغيل عامل الميناء.

    $ sudo systemctl restart docker.service
  6. تحقق لمعرفة ما إذا كان تم تكريم التغيير من خلال مراجعة إخراج نيتستات لتأكيد دوكيرد يستمع على المنفذ الذي تم تكوينه.

    $ sudo netstat -lntp | grep dockerdtcp        0      0 127.0.0.1:2375          0.0.0.0:*               LISTEN      3758/dockerd

تكوين الوصول عن بعد باستخدام daemon.json

  1. تعيين مجموعة المضيفين في / الخ/عامل الميناء / الخفي.جسون للاتصال مقبس يونكس وعنوان إب ، على النحو التالي:

    {"hosts": ["unix:///var/run/docker.sock", "tcp://127.0.0.1:2375"]}

    تكوين عامل الميناء للاستماع للاتصالات باستخدام كل من ملف وحدة سيستم دي والخفي.ملف جسون يسبب تعارض يمنع عامل الميناء من البدء.

    1. إضافة أو تعديل الأسطر التالية ، واستبدال القيم الخاصة بك.

      [Service]ExecStart=ExecStart=/usr/bin/dockerd
    2. احفظ الملف.

    3. إعادة تحميل تكوين سيستمكتل.

      $ sudo systemctl daemon-reload
  2. إعادة تشغيل عامل الميناء.

  3. تحقق لمعرفة ما إذا كان تم تكريم التغيير من خلال مراجعة إخراج نيتستات لتأكيد دوكيرد يستمع على المنفذ الذي تم تكوينه.

    $ sudo netstat -lntp | grep dockerdtcp        0      0 127.0.0.1:2375          0.0.0.0:*               LISTEN      3758/dockerd

العميل عامل الميناء سوف تكريم DOCKER_HOST متغير البيئة لتعيين -H العلم للعميل. استخدم أحد الأوامر التالية:

$ docker -H tcp://127.0.0.1:2375 ps

أو

$ export DOCKER_HOST="tcp://127.0.0.1:2375"$ docker ps

إذا كنت لا ترغب في إعادة تكوين وإعادة تشغيل الخفي عامل الميناء الخاص بك يمكنك ببساطة جسر مقبس أونيكس إلى مقبس تكب باستخدام ncat (من ال nmap حزمة):

ncat -lknvp 2375 -c "ncat -U /var/run/docker.sock"

كبديل ، يمكنك استخدام سوكات أو غيرها من الأدوات.

لأولئك الذين يبحثون عن هذه الإجابة في سياق خادم أوبونتو 20.04 الذي يستخدم التقط:

هذا التعليق قضية جيثب يجب أن تعطيك السياق الذي تحتاجه. في حالتي لم أجد مجموعة متغير بيئة البيانات الإضافية ، لذلك كان علي البحث عن كل البرنامج الخفي.ملفات جسون على النظام واستخدام واحد مع /var البادئة

$ sudo find / -name daemon.json

في حالتي كان اثنين من إدخالات لا علاقة لها لذلك أنا فقط وأضاف الألغام:

{  [.....]  "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]}

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

aufs aufs_fill_super:918:mount[3724]: no argoverlayfs: missing 'lowerdir'aufs aufs_fill_super:918:mount[3772]: no argoverlayfs: missing 'lowerdir'aufs aufs_fill_super:918:mount[3820]: no argoverlayfs: missing 'lowerdir'

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

حاولت أشياء مماثلة ويشتبه في أن الملفات / الخ / الافتراضي /عامل الميناء ، /الخ/الحرف الأول / عامل الميناء.أسيوط و / الخ / الحرف الأول.د / يتم تجاهل عامل الميناء ببساطة على أوبونتو 16.04 مع تثبيت عامل الميناء-م, يمكن لأي شخص أن يؤكد? أعتقد عندما أقوم بتشغيل " حالة عامل ميناء الخدمة “ما يحدث حقا هو” عامل ميناء حالة النظام " ، وهو نظام إدارة آخر كامل.

غير 2375 الاستماع? 'إس إس-إن تي إل`

لا. لا يوجد شيء الاستماع على 2375. ولا يمكنني معرفة التكوين في الملف الذي يؤثر على هذا. لقد شملت إخراج ‘بس أوكس’ في جوابي إذا كان ذلك يساعد.