如何创建docker卷设备/主机路径

loo*_*uni 10 docker docker-volume

我相信有一种简单的方法可以将文件复制到已经安装到容器的 docker 卷中。

docker cp /tmp/my_data/. my_container:/my_data如何将多个文件复制到 docker 数据卷中所述

但是,如何使用docker volume create --name my-volume其中已有文件的命名卷来创建?我读过将 cp 文件放入{{.Mountpoint}}.

我是 docker 的新手,所有这些都是细微差别,如果我对卷的基本理解不正确,我深表歉意。

Jin*_*alu 26

方法#1 - 复制

将文件从主机复制到容器

docker cp /path/of/the/file <Container_ID>:/path/of/he/container/folder
Run Code Online (Sandbox Code Playgroud)

上述方法的问题是,它不会保留卷或文件或目录,因为您删除容器它将丢失。这仅建议用于临时目的。

方法#2 - 卷安装

将卷从主机迁移到容器

Step1:使用自定义路径创建卷

docker volume create --name my_test_volume --opt type=none --opt device=/home/jinna/Jinna_Balu/Test_volume --opt o=bind
Run Code Online (Sandbox Code Playgroud)

Step2:挂载到容器或集群服务

docker run -d \
  --name devtest \
  --mount source=my_test_volume,target=/app \
  nginx:1.11.8-alpine
Run Code Online (Sandbox Code Playgroud)

我们可以使用以下 .yaml 文件执行上述两个步骤

version: '3'
services:
  nginx:
    image: nginx:1.11.8-alpine
    ports:
      - "8081:80"
    volumes:
      - my_test_volume:/usr/share/app
volumes:
  my_test_volume:
    driver: local
    driver_opts:
       o: bind
       type: none
       device: /home/jinna/Jinna_Balu/Test_volume
Run Code Online (Sandbox Code Playgroud)

使用 docker-compose 运行上面的 yml

docker-compose up -d
Run Code Online (Sandbox Code Playgroud)

注意:在执行 docker-compose 之前创建文件夹路径。

良好的做法是让文件保持持久性。