docker之数据管理
1、Docker容器的两个缺点
沙盒文件系统是跟随Docker容器的,无法持久化存储数据
Docker容器是和宿主机隔离的,无法共享容器内部的数据
Docker容器文件系统是基于UnionFS,由于UnionFS支持挂载不同类型的文件系统到统一的目录结构中,所以只需要将宿主操作系统中的文件系统里的文件或目录挂载到容器中,便能够让容器内外共享这个文件。UnionFS带来的读写性能损失是可以忽略不计的,所以这种实现可以说是相当优秀的。
2、Docker的挂载方式
Bind Mount,能够直接将宿主操作系统中的目录和文件挂载到容器内的文件系统中,通过指定容器外的路径和容器内的路径,就可以形成挂载映射关系,在容器内外对文件的读写,都是相互可见的。
Volume,从宿主操作系统中挂载目录到容器内,只是这个挂载的目录由Docker进行管理,只需要指定容器内的目录,不需要关心具体挂载到了宿主操作系统中的位置。
Tmpfs Mount,支持挂载系统内存中的一部分到容器的文件系统里,不过由于内存和容器的特征,它的存储并不是持久的,其中的内容会随着容器的停止而消失。
3、挂载文件或目录
root@wxj-virtual-machine:/data/www# docker run -d -p 80:80 -v /data/www:/usr/local/apache2/htdocs httpd:latest
说明:把宿主目录的/data/www挂载到容器的/usr/local/apache2/htdocs目录
挂载宿主操作系统目录的形式是-v <host-path>:<container-path>
,其中host-path和container-path分别代表宿主操作系统中的目录和容器中的目录。为了避免混淆,Docker强制定义目录时必须使用绝对路径,不能使用相对路径。
3、挂载数据卷
root@wxj-virtual-machine:/data/www# docker run -d -p 80:80 -v /data/www httpd:latest
#进入容器查看 root@wxj-virtual-machine:/data/www# docker exec -it 4bad6ef0a029 /bin/bash root@4bad6ef0a029:/usr/local/apache2/htdocs# df Filesystem 1K-blocks Used Available Use% Mounted on overlay 19519312 6144416 12360320 34% / tmpfs 65536 0 65536 0% /dev tmpfs 749264 0 749264 0% /sys/fs/cgroup /dev/mapper/ubuntu--vg-root 19519312 6144416 12360320 34% /data/www shm 65536 0 65536 0% /dev/shm tmpfs 749264 0 749264 0% /proc/acpi tmpfs 749264 0 749264 0% /proc/scsi tmpfs 749264 0 749264 0% /sys/firmware
可以看到当前宿主目录的数据卷挂载到容器中了
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。