容器数据卷

什么是容器数据卷

数据卷就是数据(一个文件或者文件夹)。数据卷是特殊的目录,可以绕过联合文件系统,为一个或多个容器提供访问。

数据卷设计的目的是数据的永久化,是完全独立于容器的生命周期,不会在容器删除时删除其挂载的数据卷,也不会存在类似垃圾收集机制,对容器引用的数据卷进行处理。

在docker的使用过程中,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,所以这就涉及到Docker容器的数据操作。 容器中数据管理主要有两种方式:数据卷和数据卷容器。

数据卷存在于宿主机中,独立于容器,和容器的生命周期是分离的,数据卷存在于宿主机的文件系统中,数据卷可以目录也可以是文件,容器可以利用数据卷与宿主机进行数据共享,实现了容器间的数据共享和交换。

总结一句话:容器的持久化和同步操作!容器间也是可以数据共享的

使用数据卷

方式一:直接使用命令来挂载 -v

docker run -it -v 主机目录:容器目录

# 测试
[root@ajie ~]# docker run -it -v /home/test:/home centos /bin/bash

# 启动成功以后,我们可以通过 docker inspect 容器id 来查看相关的信息

image-20210524083719621

测试文件的同步

image-20210524084026321

再次测试

1.关闭容器

2.在主机上对文件进行修改

3.启动容器

4.在容器中查看文件内容

image-20210524085037667

好处:我们通常在容器内无法修改配置文件,有了数据卷的挂载,我们可以在主机修改配置文件,修改后的内容会自动同步到容器中

实战:安装mysql

下载mysql镜像

image-20210524090747824

启动mysql

# 官方启动命令
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

#  -d 后台启动 
#  -it 交互模式 
#  -p 端口映射
#  -v 卷挂载
#  -e 配置mysql的密码
#  --name 给容器起名字
[root@ajie ~]# docker run -d -it -p 3301:3306 -v /home/mysql/my.conf:/etc/my.conf -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=ajie910 --name mysql01 mysql:5.7

image-20210524091810246

注意事项:用图形化界面连接这个数据库的时候,一定要确保阿里云的安全组开启了

用图形化界面SQLyog测试连接

image-20210524093024705

image-20210524093041154

本地创建数据库

image-20210524093140949

查看主机数据是否同步成功

image-20210524093307545

查看容器删除以后,数据是否依然存在

image-20210524093923426

具名和匿名挂载

# 匿名挂载
# -v 容器内路径
[root@ajie ~]# docker run -d -P --name nginx01 -v /etc/nginx nginx

# 查看 volume 的情况
[root@ajie ~]# docker volume ls

image-20210524100033349

如图所示,像这种卷的名字由很长的复杂的字符串表示的就属于匿名挂载

# 具名挂载
# -v 卷名称:容器内路径
[root@ajie ~]# docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx

image-20210524100411244

如图所示,这就是具名挂载,就是卷名称是具体的名字

查看卷在主机中挂载的位置

# docker volume inspect 卷名称
[root@ajie ~]# docker volume inspect juming-nginx

image-20210524100719154

如上图所示,卷默认都挂载在主机的/var/lib/docker/volumes

我们通过具名挂载可以方便的找到我们的卷,因此我们大多数情况下使用的也是匿名挂载

# 如何确定是具名挂载还是匿名挂载,还是指定路径挂载!
-v 容器内路径            # 匿名挂载
-v 卷名:容器内路径		   # 具名挂载 
-v /宿主机路径:容器内路径  # 指定路径挂载

扩展

# 通过 -v 容器内路径:ro rw改变读写权限
ro readonly		# 只读
rw readwrite	# 可读可写
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值