Как заставить docker compose воссоздавать вручную удаленные тома? - PullRequest
0 голосов
/ 18 октября 2019

docker-compose.yml содержит определение тома и службу, которая его использует.

#(This is a reduced but representative example)
services:
    mongo:
        image: mongo:3.6.11
        ...
        volumes:
          - "mongodb:/data/db/"

volumes:
    mongodb:
        driver: local
        driver_opts:
          type: "none"
          o: "bind"
          device: "$PWD/.storage/mongodb"

Я удалил весь каталог .storage/mongodb, желая заставить следующий docker-compose up не использовать какой-либо том снова.

Вместо этого я получил сообщение об ошибке: у докера отсутствовали данные тома.

Creating mongo       ... error

ERROR: for mongo  Cannot create container for service mongo: failed to mount local volume: mount <...>/.storage/mongodb:/var/lib/docker/volumes/mongodb/_data, flags: 0x1000: no such file or directory

Как я пытался это исправить:

  1. docker-build up --build --force-recreate. Сборка и перезапуск контейнера не работают.

  2. docker volume ls -q | while read id; do docker volume rm "$id"; done. Удаление томов, похоже, тоже не помогло.

Я предполагаю, что докер может восстановить данные удаленных томов, так как самый первый docker-compose up работает без инициализированного каталога .storage.

В принципе, я хочу, чтобы docker-compose up работал.

Было бы также замечательно понять проблему.

С нетерпением ждем вашей помощи!

1 Ответ

0 голосов
/ 18 октября 2019

Вы пробовали составить Docker с опцией -V?

-V, --renew-anon-volumes   Recreate anonymous volumes instead of retrieving
                               data from the previous containers.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...