Если вы удалили каталоги только с вашим кодом, скорее всего, том все еще существует.
При использовании docker-compose
имя родительского каталога вашего docker-compose.yml
будет добавлено к имени тома.
Таким образом, вы должны убедиться, что структура каталогов не изменится, если вы хотите повторно использовать старый том.
Например, используя следующий код docker-compose.yml
:
version: "3"
services:
db:
image: postgres
volumes:
- postgres_data:/var/lib/postresql/data
volumes:
postgres_data:
внутри каталога с именем postgres2342
приводит к:
~/workspace/teststuff/postgres2342$ docker-compose up
Creating network "postgres2342_default" with the default driver
Creating volume "postgres2342_postgres_data" with default driver
Pulling db (postgres:)...
latest: Pulling from library/postgres
8ec398bc0356: Pull complete
65a7b8e7c8f7: Pull complete
b7a5676ed96c: Pull complete
3e0ac8617d40: Pull complete
633091ee8d02: Pull complete
b01fa9e356ea: Pull complete
4cd472257298: Pull complete
1716325d7dcd: Pull complete
9b625d69c7c8: Pull complete
74d8b4d9818c: Pull complete
c36f5edbeb97: Pull complete
9b38bb0fb36e: Pull complete
6b5ee1c74b9a: Pull complete
5fcc518252b4: Pull complete
Digest: sha256:52579625addc98a371a644c0399f37e0908b6c28d3b68a0e418394adbe0eb699
Status: Downloaded newer image for postgres:latest
Creating postgres2342_db_1 ... done
Attaching to postgres2342_db_1
Обратите внимание на Creating volume "postgres2342_postgres_data" with default driver
в начале и Attaching to postgres2342_db_1
в последней строке. Он соответствует имени созданного тома.
Если я скопирую файл compose в другой каталог с именем another_postgres
и порождаю службу, это приводит к:
~/workspace/teststuff/postgres2342$ cd ..
~/workspace/teststuff$ mkdir another_postgres
~/workspace/teststuff$ cp postgres2342/docker-compose.yml another_postgres/
~/workspace/teststuff$ cd another_postgres/
~/workspace/teststuff/another_postgres$ docker-compose up -d
Creating network "another_postgres_default" with the default driver
Creating volume "another_postgres_postgres_data" with default driver
Creating another_postgres_db_1 ... done
Как вы можете видеть , название тома изменилось.
С помощью docker volume ls
вы можете отобразить все docker тома в вашей системе. Таким образом, greping для всех томов, содержащих подстроку postgres
, я получаю:
apoehlmann:~/workspace/teststuff/another_postgres$ docker volume ls | grep postgres
local another_postgres_postgres_data
local postgres2342_postgres_data
Однако, если я удаляю каталог и воссоздаю его без изменения его имени, все идет хорошо:
~/workspace/teststuff/another_postgres$ cd ..
~/workspace/teststuff$ rm -r postgres2342/
~/workspace/teststuff$ mkdir postgres2342
~/workspace/teststuff$ cp another_postgres/docker-compose.yml postgres2342/
~/workspace/teststuff$ cd postgres2342/
~/workspace/teststuff/postgres2342$ docker-compose up
Starting postgres2342_db_1 ... done
Attaching to postgres2342_db_1
Он присоединяет службу postgres к существующему тому, не создавая новый.