首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建扩展坞卷设备/主机路径

如何创建扩展坞卷设备/主机路径
EN

Stack Overflow用户
提问于 2018-04-21 06:06:46
回答 3查看 30.9K关注 0票数 15

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

How to copy multiple files into a docker data volume引用的docker cp /tmp/my_data/. my_container:/my_data

但是,如何使用docker volume create --name my-volume创建已有文件的命名卷呢?我读到,这不是一个好主意的cp文件到{{.Mountpoint}}中。

我刚接触docker,所有的都是细微差别,所以如果我对卷的基本理解是错误的,我深表歉意。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-04-21 11:58:27

方法#1 -拷贝

将文件从主机复制到容器

代码语言:javascript
复制
docker cp /path/of/the/file <Container_ID>:/path/of/he/container/folder

上述方法的问题是,它不会持久化卷或文件或目录,当您删除容器时,它将丢失。建议仅对临时pupose执行此操作。

方法#2 -卷装载

将卷从主机插入到容器

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

代码语言:javascript
复制
docker volume create --name my_test_volume --opt type=none --opt device=/home/jinna/Jinna_Balu/Test_volume --opt o=bind

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

代码语言:javascript
复制
docker run -d \
  --name devtest \
  --mount source=my_test_volume,target=/app \
  nginx:1.11.8-alpine

我们可以使用下面的.yaml文件完成上述两个步骤

代码语言:javascript
复制
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

使用docker-compose运行上面的yml

代码语言:javascript
复制
docker-compose up -d

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

保持持久性的最佳做法是将文件转换为the文件。

票数 34
EN

Stack Overflow用户

发布于 2018-04-21 07:32:00

创建卷。

代码语言:javascript
复制
$ docker volume ls | grep my-volume
$ docker run -it --rm -d --name tmp -v my-volume:/mnt alpine
$ docker volume ls | grep my-volume
local               my-volume
$ docker exec tmp ls -l /mnt
total 0
$ 

将文件复制到容器中。

代码语言:javascript
复制
$ docker cp . tmp:/mnt
$ docker exec tmp ls -l /mnt
total 4
-rw-r--r--    1 501      50              93 Apr 20 22:53 Dockerfile
$ ls
Dockerfile
$ 

清理干净。

代码语言:javascript
复制
$ docker rm -f tmp
tmp
$ 

检查一下。

代码语言:javascript
复制
$ docker run --rm -v my-volume:/mnt alpine ls /mnt
Dockerfile
$
票数 1
EN

Stack Overflow用户

发布于 2018-04-21 07:38:12

在容器和宿主机之间绑定卷。最简单的方法是使用卷挂载。使用它,我们可以在启动容器之前设置它(它的镜像、端口、..etc)

从镜像构建容器: docker-compose build启动容器: docker-compose up

docker-compose文件中的Volumes密钥用于设置绑定。这意味着当我们更新容器中的卷的内容时,即使在停止容器之后,它也会持续存在。

我们可以从本地目录或命名docker卷绑定卷,请参见下面的示例

我们可以在您的Dockerfile中使用COPY或ADD来使您的本地目录的内容在docker容器中可用。

read docs here

代码语言:javascript
复制
version: "3.2"
services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - type: volume
        source: mydata
        target: /data
        volume:
          nocopy: true
      - type: bind
        source: ./static
        target: /opt/app/static

    networks:
      webnet:

    volumes:
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49950326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档