Docker基础篇4:管理应用程序数据(管理卷及绑定挂载)

本文主要是介绍Docker基础篇4:管理应用程序数据(管理卷及绑定挂载),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Docker提供三种不同的方式将数据从宿主机挂载到容器中:volumes,bind mounts和tmpfs。
(1)volumes:Docker管理宿主机文件系统的一部分(/var/lib/docker/volumes)。
(2)bind mounts:可以存储在宿主机系统的任意位置。
(3)tmpfs:挂载存储在宿主机系统的内存中,而不会写入宿主机的文件系统。

其中前两个管理卷和绑定挂载点经常使用。

1、管理卷volume

管理卷volume官方详细说明:https://docs.docker.com/storage/volumes/

1.1、创建卷

创建卷的路径都在/var/lib/docker/volumes目录下

#创建卷的命令
[root@aliyun205 ~]# docker volume create --help
Usage:  docker volume create [OPTIONS] [VOLUME]
Create a volume
Options:-d, --driver string   Specify volume driver name (default "local")--label list      Set metadata for a volume-o, --opt map         Set driver specific options (default map[])

 创建一个卷nginx-vol

#创建一个卷nginx-vol
[root@aliyun205 ~]# docker volume create nginx-vol 
nginx-vol
[root@aliyun205 ~]# docker volume ls
DRIVER              VOLUME NAME
local               nginx-vol
#查看卷的详细信息
[root@aliyun205 ~]# docker volume inspect nginx-vol
[{"CreatedAt": "2018-11-30T16:16:14+08:00","Driver": "local","Labels": {},"Mountpoint": "/var/lib/docker/volumes/nginx-vol/_data","Name": "nginx-vol","Options": {},"Scope": "local"}
]
注意,我们发现创建卷的文件路径是/var/lib/docker/volumes/nginx-vol/_data。

1.2、用卷创建一个容器 

[root@aliyun205 ~]# docker run -d -it --name=nginx-text --mount src=nginx-vol,dst=/usr/share/nginx/html nginx
e480c78bd7a6cbe4d3e772d318bcf64bdb27c956cafe94a000e6c1331d873fbf
#推荐使用--mount的方式创建卷
[root@aliyun205 ~]# docker run -d -it --name=nginx-test2 -v nginx-vol:/usr/share/nginx/html nginx

1.3、清理删除卷

#停止容器
[root@aliyun205 ~]# docker container stop nginx-test3
nginx-test3
#删除容器
[root@aliyun205 ~]# docker container rm nginx-test3
#删除容器的卷
nginx-test3
[root@aliyun205 ~]# docker volume rm nginx-vol

【总结】

(1)如果没有指定卷,会自动创建;

(2)官方推荐使用--mount,因为更通用。

2、绑定挂载点bind mount 

绑定挂载官方参考:官方文档:https://docs.docker.com/engine/admin/volumes/bind-mounts/#start-a-container-with-a-bind-mount

【创建挂载】

[root@aliyun205 ~]# mkdir -p /opt/www
[root@aliyun205 ~]# docker run -d -it --name=nginx03 --mount type=bind,src=/opt/www,dst=/usr/share/nginx/html nginx
486079f4dbdfb34662aab8d2e87db1a8bf9441558636b597f1ad5ac56528fbb0
#在容器外面创建一个文件
[root@aliyun205 ~]# echo "hello">/opt/www/1.html
#进入容器里面查看是否有
[root@aliyun205 ~]# docker exect -it nginx03 bash
root@486079f4dbdf:/# ls /usr/share/nginx/html 
1.html

【校验检查挂载】

[root@aliyun205 ~]# docker container inspect nginx03"Mounts": [{"Type": "bind","Source": "/opt/www","Destination": "/usr/share/nginx/html","Mode": "","RW": true,"Propagation": "rprivate"}],
#进入容器里面查看
[root@aliyun205 ~]# docker exec -it nginx03 bash
root@486079f4dbdf:/# mount
/dev/vda1 on /usr/share/nginx/html type ext4 (rw,relatime,data=ordered)

【清理删除挂载】

[root@aliyun205 ~]# docker container stop nginx03
nginx03
[root@aliyun205 ~]# docker container rm nginx03
nginx03

【总结】

(1)如果源文件文件/目录没有存在,不会自动创建,会报错;

(2)如果挂载目录在容器中非空目录,则该目录现有内容将被隐藏。

这篇关于Docker基础篇4:管理应用程序数据(管理卷及绑定挂载)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1115632

相关文章

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

Linux挂载linux/Windows共享目录实现方式

《Linux挂载linux/Windows共享目录实现方式》:本文主要介绍Linux挂载linux/Windows共享目录实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录文件共享协议linux环境作为服务端(NFS)在服务器端安装 NFS创建要共享的目录修改 NFS 配

解决docker目录内存不足扩容处理方案

《解决docker目录内存不足扩容处理方案》文章介绍了Docker存储目录迁移方法:因系统盘空间不足,需将Docker数据迁移到更大磁盘(如/home/docker),通过修改daemon.json配... 目录1、查看服务器所有磁盘的使用情况2、查看docker镜像和容器存储目录的空间大小3、停止dock

Spring的基础事务注解@Transactional作用解读

《Spring的基础事务注解@Transactional作用解读》文章介绍了Spring框架中的事务管理,核心注解@Transactional用于声明事务,支持传播机制、隔离级别等配置,结合@Tran... 目录一、事务管理基础1.1 Spring事务的核心注解1.2 注解属性详解1.3 实现原理二、事务事

docker 重命名镜像的实现方法

《docker重命名镜像的实现方法》在Docker中无法直接重命名镜像,但可通过添加新标签、删除旧镜像后重新拉取/构建,或在DockerCompose中修改配置文件实现名称变更,感兴趣的可以了解一下... 目录使用标签(Tagging)删除旧的php镜像并重新拉取或构建使用docker Compose在Do

在Node.js中使用.env文件管理环境变量的全过程

《在Node.js中使用.env文件管理环境变量的全过程》Node.js应用程序通常依赖于环境变量来管理敏感信息或配置设置,.env文件已经成为一种流行的本地管理这些变量的方法,本文将探讨.env文件... 目录引言为什么使php用 .env 文件 ?如何在 Node.js 中使用 .env 文件最佳实践引

C#使用iText获取PDF的trailer数据的代码示例

《C#使用iText获取PDF的trailer数据的代码示例》开发程序debug的时候,看到了PDF有个trailer数据,挺有意思,于是考虑用代码把它读出来,那么就用到我们常用的iText框架了,所... 目录引言iText 核心概念C# 代码示例步骤 1: 确保已安装 iText步骤 2: C# 代码程

Pandas处理缺失数据的方式汇总

《Pandas处理缺失数据的方式汇总》许多教程中的数据与现实世界中的数据有很大不同,现实世界中的数据很少是干净且同质的,本文我们将讨论处理缺失数据的一些常规注意事项,了解Pandas如何表示缺失数据,... 目录缺失数据约定的权衡Pandas 中的缺失数据None 作为哨兵值NaN:缺失的数值数据Panda