如何创建 docker 卷 device/host 路径
How to create docker volume device/host path
我相信有一种简单的方法可以将文件复制到已安装到容器的 docker 卷中。
docker cp /tmp/my_data/. my_container:/my_data
由
引用
但是,如何使用 docker volume create --name my-volume
创建一个已包含文件的命名卷?
我读到将文件复制到 {{.Mountpoint}}
不是一个好主意。
我是 docker 的新手,所有这些都是细微差别,如果我对卷的基本理解不正确,请见谅。
创建卷。
$ 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
$
将文件复制到容器。
$ 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
$
清理。
$ docker rm -f tmp
tmp
$
检查。
$ docker run --rm -v my-volume:/mnt alpine ls /mnt
Dockerfile
$
在容器之间绑定卷
和主机。最简单的方法是使用卷安装。我们可以在启动之前设置您的容器,(它的图像、端口等)
从镜像构建容器:docker-compose build
启动容器:docker-compose up
docker-compose 文件中的 Volumes 键用于设置绑定。
这意味着当我们更新容器中卷的内容时
即使在停止容器后它也会持续存在。
我们可以从本地目录或命名的 docker 卷绑定卷,请参见下面的示例
我们可以在您的 Dockerfile 中使用 COPY 或 ADD 使您本地目录的内容在 docker 容器中可用。
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:
方法 #1 - 复制
将文件从主机复制到容器
docker cp /path/of/the/file <Container_ID>:/path/of/he/container/folder
上述方法的问题是,它不会保留卷或文件或目录,因为您删除容器时它会丢失。这仅建议用于临时目的。
方法 #2 - 卷安装
正在将卷从主机传送到容器
第 1 步:使用自定义路径创建卷
docker volume create --name my_test_volume --opt type=none --opt device=/home/jinna/Jinna_Balu/Test_volume --opt o=bind
Step2 : 挂载到容器或swarm服务
docker run -d \
--name devtest \
--mount source=my_test_volume,target=/app \
nginx:1.11.8-alpine
我们可以使用以下 .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
运行 上面的 yml 与 docker-compose
docker-compose up -d
注意:在执行 docker-compose 之前创建文件夹路径。
将文件挂载以保持持久性的良好做法。
我相信有一种简单的方法可以将文件复制到已安装到容器的 docker 卷中。
docker cp /tmp/my_data/. my_container:/my_data
由
但是,如何使用 docker volume create --name my-volume
创建一个已包含文件的命名卷?
我读到将文件复制到 {{.Mountpoint}}
不是一个好主意。
我是 docker 的新手,所有这些都是细微差别,如果我对卷的基本理解不正确,请见谅。
创建卷。
$ 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
$
将文件复制到容器。
$ 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
$
清理。
$ docker rm -f tmp
tmp
$
检查。
$ docker run --rm -v my-volume:/mnt alpine ls /mnt
Dockerfile
$
在容器之间绑定卷 和主机。最简单的方法是使用卷安装。我们可以在启动之前设置您的容器,(它的图像、端口等)
从镜像构建容器:docker-compose build 启动容器:docker-compose up
docker-compose 文件中的 Volumes 键用于设置绑定。 这意味着当我们更新容器中卷的内容时 即使在停止容器后它也会持续存在。
我们可以从本地目录或命名的 docker 卷绑定卷,请参见下面的示例
我们可以在您的 Dockerfile 中使用 COPY 或 ADD 使您本地目录的内容在 docker 容器中可用。
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:
方法 #1 - 复制
将文件从主机复制到容器
docker cp /path/of/the/file <Container_ID>:/path/of/he/container/folder
上述方法的问题是,它不会保留卷或文件或目录,因为您删除容器时它会丢失。这仅建议用于临时目的。
方法 #2 - 卷安装
正在将卷从主机传送到容器
第 1 步:使用自定义路径创建卷
docker volume create --name my_test_volume --opt type=none --opt device=/home/jinna/Jinna_Balu/Test_volume --opt o=bind
Step2 : 挂载到容器或swarm服务
docker run -d \
--name devtest \
--mount source=my_test_volume,target=/app \
nginx:1.11.8-alpine
我们可以使用以下 .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
运行 上面的 yml 与 docker-compose
docker-compose up -d
注意:在执行 docker-compose 之前创建文件夹路径。
将文件挂载以保持持久性的良好做法。