Por que o docker-compose emite um "nenhum arquivo ou diretório" quando o arquivo está lá?

Estou testando uma recuperação bare metal do meu servidor que basicamente inicia um conjunto de contêiner docker com meus serviços. Eu me recuperei de um backup /etc/docker, onde eu mantenho toda a configuração e volumes persistentes.

Em seguida, tentei iniciar um dos contêineres:

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'

O arquivo está, no entanto, lá:

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

Tentei todos os tipos de Encantamentos com caminhos relativos e completos-o problema é o mesmo.

Eu queria saber se o daemon docker tem acesso ao arquivo, mas também é executado como 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

Estou bastante perdido por que não funciona (o arquivo docker funciona corretamente no servidor que estou tentando replicar neste exercício DRP)

Eu encontrei uma solução alternativa (isso não é exatamente uma resposta para o problema, mas permite avançar).

  1. Eu desinstalei o docker instalação instantânea: snap remove docker
  2. Eu instalei docker dos repositórios: apt install docker.io
  3. I fornecer 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

Agora, o comando que usei para iniciar o contêiner de exemplo funciona.

Deve haver algo especial com a versão snap de docker.

Isso realmente me ajudou

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

o problema pode estar relacionado à versão python
docker-compor 1.27.x é executado para mim com Python 3.6.x
para & gt; = 1,28, seria necessário 3,7.x
docker-compose& gt; = 1.27 caiu suporte para Python 2.7

Não estou ciente dos números de versão mais baixos

Também pode ser tão simples quanto era por mim: basta iniciar o docker.

A mensagem de erro foi um pouco irritante.