Есть ли способ создать том Docker и предварительно заполнить его данными? - PullRequest
1 голос
/ 25 января 2020

Моя цель состоит в том, чтобы смоделировать что-то вроде жесткого диска или USB, которое вы можете предварительно заполнить данными, а затем подключить его к указанному c Docker контейнеру и получить к нему доступ из этого контейнера. В идеале он должен предоставлять такие опции, как монтирование в режиме только для чтения.

Я пробовал Docker томов, и ближе всего я получил что-то вроде общего каталога хоста / контейнера, смонтированного как том, docker -compose файл выглядит так:

...
image: image-name
container_name: container-name
volumes:
  - ./data:/app/data
ports:
  - "3000:3000"

Есть ли Любой способ сделать это или есть какой-то лучший подход? Спасибо.

1 Ответ

1 голос
/ 25 января 2020

Если вы хотите заполнить том данными перед его использованием, вы можете сначала создать его:

docker volume create myapplicationdata

, а затем прикрепить его к эфемерному контейнеру, чтобы заполнить его данными:

tar -C /path/to/my/files -c -f- . | docker --rm -i -v myapplicationdata:/data alpine tar -C /data -xv -f-

Чтобы использовать ранее существующий том в вашем docker-compose.yml, объявите его как внешний том:

version: "3"

services:
  myapplication:
    image: image-name
    container_name: container-name
    volumes:
      - myapplicationdata:/app/data
    ports:
      - "3000:3000"

volumes:
  myapplicationdata:
    external: true
...