0
点赞
收藏
分享

微信扫一扫

【云原生&Docker基础篇第4篇】实战探究Docker数据卷的奥秘


🏡  博客首页:派 大 星


🎢  本文由派大星原创编撰

🚧  系列专栏:Docker—云原生

🎈  本系列记录容器化技术的初次探险与深入思考历程,如有描述有误的地方还望诸佬不吝赐教

【云原生&Docker基础篇第4篇】实战探究Docker数据卷的奥秘_docker

实战探究Docker数据卷的奥秘

  • ​​前言:什么是数据卷​​
  • ​​小试牛刀之创建数据卷​​
  • ​​查看数据卷​​
  • ​​启动挂载数据卷的容器​​
  • ​​① 挂载普通目录作为数据卷​​
  • ​​②挂载主机目录作为数据卷​​
  • ​​③挂载本地主机文件作为数据卷​​
  • ​​数据卷容器​​

前言:什么是数据卷

数据卷是一个可供一个或者多个容器使用的特殊目录,它绕过​​UFS​​可以提供很多有用的特性:

  • 数据卷可以在容器之间共享和重用
  • 对数据卷的修改会立马生效
  • 对数据卷的更新不会影响镜像
  • 卷会一直存在直到没有容器使用

小试牛刀之创建数据卷

使用​​docker volume create [数据卷名称]​​命令来创建一个数据卷

[root@VM-4-14-centos /]# docker volume create my-vol

【云原生&Docker基础篇第4篇】实战探究Docker数据卷的奥秘_原力计划_03

查看数据卷

创建完成之后就需要查看创建的数据卷是否存在

[root@VM-4-14-centos /]# docker volume ls
DRIVER VOLUME NAME
local

【云原生&Docker基础篇第4篇】实战探究Docker数据卷的奥秘_数据_04

除此之外也可以通过命令来查看数据卷的详细信息

docker volume inspect [数据卷名称]

【云原生&Docker基础篇第4篇】实战探究Docker数据卷的奥秘_docker_05

启动挂载数据卷的容器

① 挂载普通目录作为数据卷

首先在使用​​docker run​​启动挂载数据卷的容器之前,需要了解一些命令基础:

  • ​-v​​:标记来创建一个数据卷并挂载到容器里
  • ​--mount​​ :标记来将 数据卷 挂载到容器里

由上述两条命令的作用是一样的,都是将数据卷挂载到容器里,但是在书写时的格式却差别略大,而且在使用​​docker run​​启动中一次可以挂载多个数据卷

-v

docker

【云原生&Docker基础篇第4篇】实战探究Docker数据卷的奥秘_docker_06

--mount

$ docker run -d -P \
--name web \
--mount source=my-vol,target=/usr/share/nginx/html \

使用​​--mount​​​需要指定​​source​​也就是数据卷的名称和挂载到的目标位置

②挂载主机目录作为数据卷

依然是使用​​-v​​指定一个本地主机目录到容器中

docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py

【云原生&Docker基础篇第4篇】实战探究Docker数据卷的奥秘_原力计划_07


上述的命令加载主机的​​/src/webapp​​​目录到容器的​​/opt/webapp​​目录下,这个功能在进行测试的时候十分方便,比如用户放置一些程序到本地目录,来查看容器是否正常工作。

注📢: 本地目录的路径必须是绝对路径,如果目录不存在​​Docker​​​会自动为你创建,并且​​Docker​​​挂载数据卷的默认权限是读写,用户也可以通过​​:ro​​指定为只读

docker

【云原生&Docker基础篇第4篇】实战探究Docker数据卷的奥秘_原力计划_08

③挂载本地主机文件作为数据卷

同样使用​​-v​​命令从主机挂载单个文件到容器中

docker

【云原生&Docker基础篇第4篇】实战探究Docker数据卷的奥秘_原力计划_09

数据卷容器

如果有一些持续更新的数据需要在容器之间共享,最好创建数据卷容器

数据卷容器其实就是一个正常的容器,专门用来提供数据卷供其他容器挂载

首先创建一个命名的数据卷容器 ​​pdx​​:

docker run -d -v /pdx --name pdx training/postgres echo Data-only container for

【云原生&Docker基础篇第4篇】实战探究Docker数据卷的奥秘_数据_10

还可以在其他容器中使用​​--volumes-from​​参数来从多个容器挂载多个数据卷,也可以从其他已经挂载的数据卷的容器来挂数据卷

docker run -d volumes-from pdx --name p1 training/postgres
docker

注意📢: 使用​​--volumes-from​​参数所挂载数据卷的容器自己并不需要保持在运行状态

如果删除了挂载的容器(包括​​pdx、p1和p2​​​),数据卷并不会被自动删除。如果要删除一个数据卷,必须在删除最后一个还挂载着它的容器时使用​​docker rm -v​​命令来指定同时删除关联的容器。

【云原生&Docker基础篇第4篇】实战探究Docker数据卷的奥秘_docker_12


举报

相关推荐

0 条评论