Docker数据管理

目录

数据卷(Data Volumes)

容器和宿主机的数据共享

1.拉取centos镜像

2.创建容器

3.输入内容验证

经过宿主机,实现容器间的数据共享

1.创建a2容器,并且挂载同一个宿主机目录

2.输入内容验证

挂载文件

1.创建a2容器,并且挂载文件

2.只读操作

数据卷容器

1.创建a1容器作为数据卷容器

2.挂载a1容器的数据卷到新的容器a2,a3

3.进入a1容器,并输入内容

4.进入a2 a3容器验证

容器互联


数据卷(Data Volumes)

  • 数据卷是一个供容器使用的特殊目录,位于容器中。可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立刻可见,并且更新数据不会影响镜像,从而实现数据在宿主机与容器之间的迁移。数据卷的使用类似于Linux下对目录进行的mount操作

容器和宿主机的数据共享

1.拉取centos镜像

docker pull centos:7

2.创建容器

宿主机目录/var/www 挂载到a1容器中的/data

注意:宿主机本地目录的路径必须使用绝对路径。如果路径不存在,Docker会自动创建相应路径。

ls /var/www/html
docker run -id --name a1 -v /var/www/html:/data centos:7 bash  
#-v选项可以在容器内创建数据卷也会在宿主机创建目录

3.输入内容验证

docker exec -it a1 bash         #进入容器
echo '123456' > /data/jlh.txt   #输入内容到共享目录中
 
#宿主机上查看
cd /var/www/html
cat jlh.txt

经过宿主机,实现容器间的数据共享

1.创建a2容器,并且挂载同一个宿主机目录

宿主机目录/var/www 挂载到a2容器中的/mnt

docker run -id --name a2 -v /var/www/html:/mnt centos:7 bash
docker exec -it a2 bash

2.输入内容验证

#a2容器上输出
echo 'abcdef' > /mnt/zx.txt

#宿主机上查看
cd /var/www/html/
cat zx.txt

#a1容器上查看
cd /data/
cat zx.txt

挂载文件

1.创建a2容器,并且挂载文件

docker run -id --name a3 -v /var/www/html/zx.txt:/mnt/zx.txt centos:7 bash
docker exec -it a3 bash
cat /mnt/zx.txt
 
#宿主机共享目录
echo 'scj is shuaige!!' > /var/www/html/zx.txt

#a3容器共享目录下查看
cat /mnt/zx.txt

2.只读操作

docker run -id --name a4 -v /var/www/html/zx.txt:/mnt/zx.txt:ro centos:7 bash  #ro代表只允许只读操作

数据卷容器

不经过宿主机,实现容器间的数据共享

  • 如果需要在容器之间共享数据,最简单的方法就是使用数据卷容器。数据卷容器是一个普通的容器,专门提供数据卷给其他容器挂载使用。

1.创建a1容器作为数据卷容器

docker run -id --name a1 -v /data1 -v /data2 centos:7 bash

2.挂载a1容器的数据卷到新的容器a2,a3

#使用 --volumes-from 来挂载 a1 容器中的数据卷到新的容器
docker run -id --name a2 --volumes-from a1 centos:7 bash
docker run -id --name a3 --volumes-from a1 centos:7 bash

3.进入a1容器,并输入内容

docker exec -it a1 bash
echo 'jlh' > data1/zx1.txt
echo 'zx' > data2/zx2.txt
exit   

4.进入a2 a3容器验证

#a2容器操作
docker exec -it a2 bash
ls data1
ls data2

#a3容器操作
docker exec -it a3 bash
ls data1
ls data2

容器互联

使用centos镜像

  • 默认情况下docker容器重新创建后,对应的容器IP地址可能会改变,这样如果两个容器之间通信就会变得非常麻烦,每次都要修改通信的IP地址
  • 容器互联是通过容器的名称在容器间建立一条专门的网络通信隧道。简单点说,就是会在源容器和接收容器之间建立一条隧道,接收容器可以看到源容器指定的信息
#创建并运行接收容器取名a4,使用--link选项指定连接容器以实现容器互联
docker run -id --name a4 --link a3:xy101 centos:7 bash   #--link 容器名:连接的别名
 
docker exec -it a4 bash
ping a3
ping xy101

重启容器测试(重启后ip会发生改变)

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值