Docker 数据卷

简介:

Docker适合许多无状态的服务,对于数据的存储和共享一般是通过数据卷和数据卷容器的方式,这里将介绍Docker数据卷的相关内容。


docker数据卷的实现方式有两种:

1、创建一个数据卷容器。

2、创建一个容器,分配存储空间,让其他容器访问。


数据卷

数据卷可以当作一个特殊的容器。docker的其他容器都可以对他进行访问,类似于NFS。

创建一个数据卷,在容器内部挂载/data:

1
docker run -it --name volume - v  /data  centos

-v 指定挂载一个卷或者容器卷。

在容器中可以看到有一个/data目录:

1
2
[root@ed9ca073c034 /] # df -h|grep data
/dev/mapper/centos-root              38G  3.8G   34G  10%  /data

我们可以通过查看容器的信息,确认容器中/data的所映射的宿主机目录:

1
2
3
4
5
6
7
8
9
10
11
12
# docker inspect volume|grep  "Mounts" -A 10
         "Mounts" : [
             {
                 "Name" : "0ceaa3d20a99dd152b542b,
                 "Source" "/var/lib/docker/volumes/0ceaa3d20a99dd152b/_data" ,
                 "Destination" "/data" ,
                 "Driver" "local" ,
                 "Mode" "" ,
                 "RW" true ,
                 "Propagation" ""
             }
         ],

在Source 项中,指定了本地的路径/var/lib/docker/volumes/0ceaa/_data,映射到容器中的就是/data目录,在容器的/data目录中写入的数据,在宿主机的此路径一样可以看到,其实相当于是容器挂载的宿主机的某个目录。

使用上面的方式系统会默认使用宿主机/var/lib/docker/volumes这个路径,如果我们想指定一个路径可以使用如下方式:

宿主机创建一个挂载目录:

1
  mkdir  /docker_volume

创建容器卷,映射宿主机/docker_volume目录到容器的/data目录:

1
docker run  -it --name volume1 - v  /docker_volume/ : /data  centos

可以指定容器对目录的读写权限:

1
2
docker run  -it --name volume1 - v  /docker_volume/ : /data :ro  centos    #只读
docker run  -it --name volume1 - v  /docker_volume/ : /data :rw  centos    #读写

如果设置为只读状态,尝试对目录文件进行修改时会提示只读:

1
2
[root@f7f41d28af31 data] # touch bb
touch : cannot  touch  'bb' : Read-only  file  system

也可以对文件进行挂载(不推荐):

1
docker run  -it --name volume1 - v  /test .log/: /test .log  centos

容器卷可以不启动,其他容器也能正常访问,只有当所有容器都卸载容器卷磁盘时容器才可以被删除。


访问数据卷容器

数据卷容器就是让一个容器访问另一个容器的卷。

创建一个容器volumeA,访问volume1容器中的/data目录:

1
docker run -it --name volumeA --volumes-from volume1 centos

查看volumeA中的目录:

1
2
# df -h|grep data
/dev/mapper/centos-root                   38G  3.8G   34G  10%  /data

容器就可以共享宿主机的/docker_volume目录中的所有文件了。

提示:如果是通过以上的方式从宿主机映射一个目录到容器中,其他容器通过挂载此容器的方式来访问数据卷,当这个容器停止甚至删除后对其它容器不会有任何影响。



 本文转自 酥心糖 51CTO博客,原文链接:http://blog.51cto.com/tryingstuff/1946241

相关文章
|
2月前
|
关系型数据库 MySQL Docker
【Docker】4、Docker 数据卷
【Docker】4、Docker 数据卷
42 0
|
2月前
|
数据管理 数据库 数据安全/隐私保护
数据管理与持久化:深度解析Docker数据卷
Docker 数据卷在容器化应用中扮演着关键角色,它们提供了一种灵活且可持久化的方式来处理应用数据。本文将深入讨论 Docker 数据卷的基本概念、使用方法以及一系列高级应用场景,通过更为丰富和实际的示例代码,帮助大家全面掌握数据卷的使用和管理。
|
2月前
|
应用服务中间件 nginx Docker
Docker部署Nginx以及挂载数据卷(代码详细展示)_nginx 挂载大文件卷(1)
Docker部署Nginx以及挂载数据卷(代码详细展示)_nginx 挂载大文件卷(1)
|
4天前
|
Shell Linux Docker
docker常用命令大全(基础、镜像、容器、数据卷)
这些命令仅仅是 Docker 命令行工具的冰山一角,但对于日常操作来说已经非常全面。通过熟练地使用这些基础命令,用户可以有效地管理 Docker 的镜像、容器、数据卷和网络。随着用户对 Docker 的深入使用,更高级的命令和选项将会变得必需,但上面列出的命令已经为用户提供了一个坚实的起点。对于初学者来说,理解和掌握这些常用命令是深入学习 Docker 的基础。
57 4
docker常用命令大全(基础、镜像、容器、数据卷)
|
2月前
|
Shell Linux Docker
Docker -v 挂载主机目录到容器中(及数据卷容器)
Docker -v 挂载主机目录到容器中(及数据卷容器)
125 0
|
18天前
|
Docker 容器
docker(四):数据卷
docker(四):数据卷
14 0
|
2月前
|
安全 Linux Docker
Ubantu docker学习笔记(六)容器数据卷
Ubantu docker学习笔记(六)容器数据卷
Ubantu docker学习笔记(六)容器数据卷
|
2月前
|
应用服务中间件 nginx Docker
Docker部署Nginx以及挂载数据卷(代码详细展示)_nginx 挂载大文件卷(3)
Docker部署Nginx以及挂载数据卷(代码详细展示)_nginx 挂载大文件卷(3)
|
2月前
|
应用服务中间件 nginx Docker
Docker部署Nginx以及挂载数据卷(代码详细展示)_nginx 挂载大文件卷(2)
Docker部署Nginx以及挂载数据卷(代码详细展示)_nginx 挂载大文件卷(2)
|
2月前
|
应用服务中间件 nginx Docker
Docker部署Nginx以及挂载数据卷(代码详细展示)_nginx 挂载大文件卷
Docker部署Nginx以及挂载数据卷(代码详细展示)_nginx 挂载大文件卷