Mengapa docker-compose mengeluarkan "tidak ada file atau direktori seperti itu" ketika file itu ada?

Saya menguji pemulihan logam telanjang server saya yang pada dasarnya memulai satu set wadah buruh pelabuhan dengan layanan saya. Saya pulih dari cadangan /etc/docker, di mana saya menyimpan semua konfigurasi dan volume persisten.

Saya kemudian mencoba memulai salah satu wadah:

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'

Namun file tersebut ada:

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

Saya mencoba semua jenis mantra dengan jalur relatif dan penuh - masalahnya sama.

Saya bertanya-tanya apakah daemon docker memiliki akses ke file, tetapi juga berjalan sebagai 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

Saya cukup bingung mengapa tidak berfungsi (file buruh pelabuhan berfungsi dengan benar di server yang saya coba tiru dalam latihan DRP ini)

Saya menemukan solusi (ini bukan jawaban untuk masalah ini, tetapi memungkinkan untuk maju).

  1. Saya mencopot pemasangan docker instalasi snap: snap remove docker
  2. Saya menginstal docker dari repositori: apt install docker.io
  3. I terpasang 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

Sekarang perintah yang saya gunakan untuk memulai wadah contoh berfungsi.

Pasti ada sesuatu yang istimewa dengan versi snap docker.

Ini benar-benar membantu saya

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

masalahnya bisa terkait dengan versi python
docker-menulis 1.27.x berjalan untuk saya dengan Python 3.6.x
untuk& gt; = 1.28 , satu akan membutuhkan 3.7.x
docker-compose & gt; = 1.27 menjatuhkan dukungan untuk Python 2.7

Saya tidak mengetahui nomor versi yang lebih rendah

Bisa juga sesederhana itu oleh saya: mulai saja docker.

Pesan kesalahan agak menjengkelkan.