007_Docker挂载本地目录和数据卷容器实现文件共享

2022-01-25  本文已影响0人  AI秘籍

docker在容器中管理数据主要有两种方式:

(1)数据卷(Volumes)

(2)挂载主机目录(Bind mounts)。

从docker下载下来的叫镜像images;

使用docker run运行起来的镜像叫容器containers;

1. 挂在本地目录

Docker容器启动时,如果要挂载宿主机上的一个目录,可以用-v参数指定。

加入要启动一个ubuntu容器,宿主机的/data1目录挂载到容器的/data2目录,可通过以下方式指定:

docker run -it -v /data1:/data2 centos /bin/bash

image.png image.png

在容器启动后,容器内会自动创建/data2的目录。

-v参数中,冒号":"前面的目录是宿主机目录,后面的目录是容器内目录。

冒号”:”前后的路径必须是绝对路径,以下斜线“/”开头。

宿主机目录如果不存在,则会自动生成。

现在镜像内就可以在宿主机和docker里互相共享文件了。

image.png

2. docker数据卷容器

docker还提供了一种更高级的用法,叫数据卷。

数据卷:“其实就是一个正常的容器,专门用来提供数据卷供其它容器挂载的”。感觉像是由一个容器定义的一个数据挂载信息。其他的容器启动可以直接挂载数据卷容器中定义的挂载信息。

Step1.创建数据卷命令

docker volume create edc-nginx-vol // 创建一个自定义容器卷

docker volume ls // 查看所有容器卷

docker volume inspect edc-nginx-vol // 查看指定容器卷详情信息

image.png

volumes:默认位于/var/lib/docker/volumes目录中。

Step2.****创建使用指定卷的容器

有了自定义容器卷,我们可以创建一个使用这个数据卷的容器。

命令:

docker run -d -it --name=shared-vol -v shared-vol:/shareddata ubuntu:18.04

docker ps

docker exec -it 80692ff2b813 /bin/bash

image.png

到刚刚创建的数据卷里面查看:

image.png

此外,我们还可以启动多个容器实例,并且共享同一个数据卷,复用性和扩展性较强。

Step3.****如果不再使用数据卷了,可以手动清理掉

命令:

docker stop xxx// 暂停容器实例

docker rm xxx // 移除容器实例

docker volume rm xxx // 删除自定义数据卷

image.png

原文链接:
Docker挂载本地目录和数据卷容器实现文件共享 - 知乎 (zhihu.com)
https://mp.weixin.qq.com/s/MvJdjDfMCU6g3UhStiinyg

上一篇 下一篇

猜你喜欢

热点阅读