有没有办法创建Docker卷并用数据预填充它?

有没有办法创建Docker卷并用数据预填充它?,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我的目标是模拟硬盘或USB之类的东西,您可以预先填充数据,然后将其装载到特定的Docker容器中,并从该容器访问它。理想情况下,它应该提供选项,例如以只读模式安装 我尝试了Docker卷,得到的最接近的是作为卷装入的共享主机/容器目录,Docker compose文件如下所示: ... image: image-name container_name: container-name volumes: - ./data:/app/data ports: - "3000:3000" 有没有

我的目标是模拟硬盘或USB之类的东西,您可以预先填充数据,然后将其装载到特定的Docker容器中,并从该容器访问它。理想情况下,它应该提供选项,例如以只读模式安装

我尝试了Docker卷,得到的最接近的是作为卷装入的共享主机/容器目录,Docker compose文件如下所示:

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

有没有办法做到这一点,或者有没有更好的方法?谢谢。

如果要在使用卷之前用数据填充卷,可以先创建它:

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

为什么需要这个?您在问题中描述的主机目录设置有什么问题?