определите тома в docker-compose.yaml

#docker #docker-compose #docker-volume

Вопрос:

Я пишу docker-compose.yaml файл для своего проекта. Я проверил документацию по томам здесь .

Я также понимаю концепцию volume в docker, что я могу смонтировать том, например -v my-data/:/var/lib/db , где my-data/ находится каталог на моей хост-машине, в то время /var/lib/db как путь внутри контейнера базы данных.

Моя путаница связана со ссылкой, которую я привел выше. Там у него есть следующий образец:

 version: "3.9"

services:
  db:
    image: db
    volumes:
      - data-volume:/var/lib/db
  backup:
    image: backup-service
    volumes:
      - data-volume:/var/lib/backup/data

volumes:
  data-volume:
 

Интересно, означает ли это, что я должен создать каталог с именем data-volume на своей хост-машине? Что делать, если у меня на компьютере есть каталог с путем temp/my-data/ , и я хочу подключить этот путь к контейнеру базы /var/lib/db данных ? Должен ли я сделать что-то вроде ниже?

 version: "3.9"

services:
  db:
    image: db
    volumes:
      - temp/my-data/:/var/lib/db

volumes:
  temp/my-data/:
 

Моя главная путаница-это volumes: раздел внизу, я не уверен, должно ли имя тома быть путем к моему каталогу или должно быть просто буквальным именем, которое я даю, и если это последний случай, то как данное имя может быть сопоставлено temp/my-data/ на моей машине? Образец не указывает на это и неоднозначен, чтобы прояснить это.

Не мог бы кто-нибудь, пожалуйста, прояснить это для меня?

P.S. Я попробовал с вышеприведенным докером-сочинять, как я догадался, закончилось ошибкой:

 ERROR: The Compose file './docker-compose.yaml' is invalid because:
volumes value 'temp/my-data/' does not match any of the regexes: '^[a-zA-Z0-9._-] 


Ответ №1:

Сопоставленные тома могут быть либо файлами/каталогами на главной машине (иногда называемыми bind mounts в документации), либо томами docker, которыми можно управлять с помощью docker volume команд.

volumes: Раздел в файле docker-compose указывает тома docker, т. е. не файлы/каталоги. Первая докер-композиция в вашем посте использует такой объем.

Если вы хотите сопоставить файл или каталог (как в вашем последнем файле docker-compose), вам не нужно ничего указывать в этом volumes: разделе.

Тома Docker (указанные в volumes: разделе или созданные с помощью docker volume create ), конечно, также хранятся где-то на вашем хост-компьютере, но docker управляет этим, и вам обычно не нужно знать, где или в каком формате.

Я думаю, что эта часть документации довольно хорошо объясняет это, я думаю https://docs.docker.com/storage/volumes/

Ответ №1:

Сопоставленные тома могут быть либо файлами/каталогами на главной машине (иногда называемыми bind mounts в документации), либо томами docker, которыми можно управлять с помощью docker volume команд.

volumes: Раздел в файле docker-compose указывает тома docker, т. е. не файлы/каталоги. Первая докер-композиция в вашем посте использует такой объем.

Если вы хотите сопоставить файл или каталог (как в вашем последнем файле docker-compose), вам не нужно ничего указывать в этом volumes: разделе.

Тома Docker (указанные в volumes: разделе или созданные с помощью docker volume create ), конечно, также хранятся где-то на вашем хост-компьютере, но docker управляет этим, и вам обычно не нужно знать, где или в каком формате.

Я думаю, что эта часть документации довольно хорошо объясняет это, я думаю https://docs.docker.com/storage/volumes/