لماذا عامل الميناء يؤلف قضية "لا يوجد مثل هذا الملف أو الدليل" عندما يكون الملف هناك?

أنا اختبار استرداد المعادن العارية من خادم بلدي الذي يبدأ أساسا مجموعة من حاوية عامل الميناء مع خدماتي. لقد تعافيت من نسخة احتياطية /etc/docker، حيث أحتفظ بكل التكوين والأحجام المستمرة.

ثم حاولت أن أبدأ إحدى الحاويات:

root@srv-backup:/etc/docker# docker-compose --verbose -f /etc/docker/docker-compose.d/20-registry.yaml upcompose.config.config.find: Using configuration files: /etc/docker/docker-compose.d/20-registry.yamlERROR: compose.cli.main.main: .IOError: [Errno 2] No such file or directory: '/etc/docker/docker-compose.d/20-registry.yaml'

الملف هو ولكن هناك:

root@srv-backup:/# ll /etc/docker/docker-compose.d/20-registry.yaml-rwxrwxr-x+ 1 root root 842 Jan 24 15:19 /etc/docker/docker-compose.d/20-registry.yaml*root@srv-backup:/# cat /etc/docker/docker-compose.d/20-registry.yamlservices:  registry:    container_name: registry    image: registry    labels:      - traefik.http.routers.registry.rule=Host(`registry.example.com`)      - traefik.http.routers.registry.entryPoints=https      - traefik.http.routers.registry.tls=true      - traefik.http.routers.registry.tls.certresolver=le      - traefik.http.middlewares.lan.ipwhitelist.sourcerange=192.168.10.0/24, 192.168.20.0/24      - traefik.http.routers.registry.middlewares=lan      - traefik.enable=true    restart: unless-stopped    volumes:      - /etc/docker/container-data/registry:/var/lib/registryversion: '3'root@srv-backup:/# file /etc/docker/container-data/registry/etc/docker/container-data/registry: directory

لقد جربت كل أنواع التعويذات ذات المسارات النسبية والكاملة-المشكلة هي نفسها.

كنت أتساءل ما إذا كان الخفي عامل الميناء لديه حق الوصول إلى الملف ، ولكنه يعمل أيضا على النحو التالي root:

root@srv-backup:/# ps -ef | grep dockerroot      2048     1  0 10:58 ?        00:00:08 dockerd -G docker --exec-root=/var/snap/docker/423/run/docker --data-root=/var/snap/docker/common/var-lib-docker --pidfile=/var/snap/docker/423/run/docker.pid --config-file=/var/snap/docker/423/config/daemon.jsonroot      2200  2048  0 10:58 ?        00:00:07 containerd --config /var/snap/docker/423/run/docker/containerd/containerd.toml --log-level error

أنا تماما في حيرة لماذا لا يعمل (ملف عامل الميناء يعمل بشكل صحيح على الخادم أحاول تكرار في هذا التمرين درب)

لقد وجدت حلا (هذا ليس بالضبط إجابة للمشكلة ، ولكن يسمح للمضي قدما).

  1. أنا إلغاء تثبيت docker المفاجئة التثبيت: snap remove docker
  2. لقد قمت بتثبيت docker من المستودعات: apt install docker.io
  3. I تثبيت docker-compose:
curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose

الآن الأمر الذي استخدمته لبدء عمل حاوية المثال.

يجب أن يكون هناك شيء خاص مع النسخة المفاجئة من docker.

هذا ساعدني فعلا

pip3 install --upgrade --force-reinstall --no-cache-dir docker-compose && ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose

يمكن أن تكون المشكلة مرتبطة بإصدار بايثون
عامل الميناء-يؤلف 1.27.س يعمل بالنسبة لي مع بيثون 3.6.x
= 1.28 ، يحتاج المرء إلى 3.7.x
= 1.27 انخفض الدعم لبيثون 2.7

لست على علم بأرقام الإصدار الأقل

ويمكن أيضا أن تكون بسيطة كما كان من قبلي:مجرد بداية عامل الميناء.

كانت رسالة الخطأ مزعجة بعض الشيء.