容器数据卷

本文详细介绍了Docker数据卷的工作原理,包括其作为容器数据持久化手段,容器之间的数据交换,以及如何通过`-v`命令进行挂载。通过实例展示了数据同步和容器间的信息传递。数据卷的生命周期与宿主机紧密关联,本地数据不会因容器删除而丢失。
摘要由CSDN通过智能技术生成

#数据卷:

  1.         数据卷是宿主机中的一个目录或文件
  2.         当容器目录和数据卷目录绑定后,对方的修改会立即同步
  3.         一个数据卷可以被多个容器同时挂在
  4.         一个容器也可以被挂在多个数据卷

#数据卷的作用:

  1. 容器数据持久化,
  2. 外部机器和容器间接通信,
  3. 容器之间数据交换.

#容器数据卷的挂载

#通过-v 命令

#docker run -it -v 本机目录:容器目录 容器 command

[root@localhost home]# docker run -it -v /home/test:/home centos /bin/bash
[root@ed5829f48f5e /]# 

#在容器内部的home目录下新建一个test01.txt文件

[root@ed5829f48f5e /]# cd home
[root@ed5829f48f5e home]# ls
[root@ed5829f48f5e home]# touch test01.txt
[root@ed5829f48f5e home]# ls
test01.txt

#由于容器已和本机挂载,此时查看本机/home/test的目录下发现有在容器中创建的test01.txt文件

[xiezuotao@localhost home]$ cd test
[xiezuotao@localhost test]$ ls
test01.txt

#此时关闭容器,在本机中修改test01.txt文件中的信息,

本机中修改文件中的信息

[root@localhost test]# vim test01.txt
[root@localhost test]# cat test01.txt
abcd
efgh
ijkl
mnop

#打开容器,查看容器中test01.txt文件是否发生改变

#打开容器

[root@localhost home]# docker start ed5829f48f5e
ed5829f48f5e
[root@localhost home]# docker ps
CONTAINER ID   IMAGE                 COMMAND                   CREATED          STATUS          PORTS                                       NAMES
ed5829f48f5e   centos                "/bin/bash"               13 minutes ago   Up 7 seconds                                                jolly_shaw
b07c48fa6439   portainer/portainer   "/portainer"              3 hours ago      Up 11 seconds   0.0.0.0:8088->9000/tcp, :::8088->9000/tcp   fervent_rosalind
96ad5a5352ad   nginx                 "/docker-entrypoint.…"   3 hours ago      Up 3 hours      0.0.0.0:3344->80/tcp, :::3344->80/tcp       nginx01


#进入容器并查看容器中的test01.txt文件
#发现容器内的数据依旧是同步的

[root@localhost home]# docker exec -it ed5829f48f5e /bin/bash
[root@ed5829f48f5e /]# cd /home
[root@ed5829f48f5e home]# ls
test01.txt
[root@ed5829f48f5e home]# cat test01.txt
abcd
efgh
ijkl
mnop

#只要通过 --volumes-from 可以实现数据共享   共享卷  (拷贝)

#先启动一个容器docker01

[root@localhost xiezuotao]# docker run -it --name docker01 Xiezuotao/centos

#通过 --volumes-from 将docker02和docker01共享

[root@localhost xiezuotao]# docker run -it --name docker02 --volumes-from docker01 Xiezuotao/centos

#删除docker01,docker02依旧还可以访问这个文件

#好比是备份

#多个mysql实现数据共享

docker run -d -p 3310:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7


docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql02 --volumes-from mysql:5.7


#可以实现两个容器数据同步

#容器间配置信息的传递,数据卷容器的生命周期一直持续到没有容器为止.

#一旦持久化到本地,这个时候本地的数据不会删除.

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值