LINUX.ORG.RU
ФорумAdmin

Docker при создании именованного тома создаёт и использует свой.

 


0

1

Добрый день!

Создаю контейнер с mysql. Для этого использую вот такой файл docker-compose.yml:

version: '3.4'

services:
  db:
    image: mysql/mysql-server
    restart: always
    env_file: '.env'
    volumes:
      - mysql-data:/var/lib/mysq

volumes:
  mysql-data:
    external: true
    name: mysql-data

Создаю хранилище и проверяю:

docker volume create --name=mysql-data
docker volume ls
DRIVER              VOLUME NAME
local               mysql-data

Всё нормально. Запускаю:

docker-compose -f docker-compose.yml up

Всё стартует нормально и...

docker volume ls
DRIVER              VOLUME NAME
local               16864e5cc4cb7157263d746ce0b07a4aee31f89c5af47a3bdb7f83d1571f7066
local               mysql-data

...появляется ещё одно хранилище. Заглядываю в него и вижу, что там лежат файлы БД mysql. А в том хранилище, которое создал я ничего нет.

Попробовал с двумя контейнерами с хабдокера (mysql и mysql/mysql-server) - поведение одинаковое.

docker --version
Docker version 17.12.0-ce, build c97c6d6

docker-compose --version
docker-compose version 1.18.0, build 8dd22a9

Пробовал и вариант с автоматическим созданием хранилища:

version: '3.4'

services:
  db:
    image: mysql
    restart: always
    env_file: '.env'
    volumes:
      - mysql-data:/var/lib/mysq

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

volumes:
  mysql-data:

В этом случае создаётся хранилище mysql_mysql-data и ещё одно с длинным именем (4cb7157263d746ce0b...). И все данные в этой длинноимённой папке.

В чём ошибка, что делаю не так?

mysql-data:/var/lib/mysq

не делай так вообще. хранить бд на volume докера - плохая идея, в плане производительности и надежности.
прибивай данные к ФС на хосте:

/куда/положишь/бд/на/хосте:/var/lib/mysql

dib2 ★★★★★ ()
Ответ на: комментарий от dib2

Не понял. Так это вариант монтирования на хост! Т.е. не в докере, а на хосте с которого докер запускается. Фактически укороченный вариант ключа -v /куда/положишь/бд/на/хосте:/var/lib/mysql. С той разницей, что вместо «/куда/положишь/бд/на/хосте» подставляется /var/lib/docker/volumes/

Или о чём-то другом речь?

bigmike4339 ()
Ответ на: комментарий от bigmike4339

С той разницей, что вместо

нет, емнип, это будет именованный volume, не mount bind. посмотри какая ФС у твоих /var/lib/docker/volumes/.../

dib2 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.