6.docker数据卷

本文详细介绍了Docker数据卷的概念、特点及作用,强调了数据卷的持久性和独立于容器生命周期的特性。通过示例展示了如何创建和使用数据卷,包括容器使用独立数据卷、系统数据卷以及数据卷容器的实践,从而实现容器间的数据共享和持久化。
摘要由CSDN通过智能技术生成

docker数据卷

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

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

1.docker数据卷独立于docker的存在,与容器生存周期分离

2.docker数据卷存在于docker的宿主机文件系统中

3.docker数据卷可以是目录也可以是文件

4.docker容器和利用数据卷和宿主机资源共享

5.同一个目录或者文件可以支持多个容器的访问,实现了容器间数据的共享和交换

数据卷的特点

1.数据卷在容器启动时初始化,如果容器使用的镜像在挂载点包含了数据,这些数据会拷贝到新初始化的数据卷中

2.数据卷可以在容器之间共享和重用

3.可以对数据卷里的内容直接进行修改

4.数据卷的变化不会影响镜像的更新

5.卷会一直存在,即使挂载数据卷的容器已经被删除

在虚拟机192.168.20.201上

一.容器使用独立的数据

运行一个nginx容器

[root@docker ~]# docker run --name web1 -d -p 80:80 nginx

查询

[root@docker ~]# docker ps

CONTAINER ID IMAGE COMMAND CREATED

STATUS PORTS NAMES

8cc57c5e984c nginx:latest "nginx -g 'daemon of About a minute ago Up About a minute 0.0.0.0:80->80/tcp, 443/tcp web1

描述web1容器的元数据信息

[root@docker ~]# docker inspect web1

登录web1容器

[root@docker ~]# docker exec -it web1 /bin/bash

root@8cc57c5e984c:/# cd /usr/share/nginx/html

root@8cc57c5e984c:/usr/share/nginx/html# ls

50x.html index.html

root@8cc57c5e984c:/usr/share/nginx/html# echo "123" > index.html

root@8cc57c5e984c:/usr/share/nginx/html# cat index.html

123

root@8cc57c5e984c:/usr/share/nginx/html#exit

[root@docker201.com ~]

curl 172.17.0.2

123

二.容器使用系统的数据卷

建立卷内容

[root@docker ~]# mkdir /webroot

[root@docker ~]# vim /webroot/ndex.html

hello i host SO

将宿主机的卷共享给容器

[root@docker ~]# docker run --name nginx1 -d -v /webroot:/usr/share/nginx/html nginx /web2/html:/usr/share/nginx/html -v /web2/logs:/var/log/nginx nginx

[root@docker201.com ~]

curl 172.17.0.2

hello i am hostSO

(在宿主机上存网页,在容器里可以访问到,并可共享多个)

容器内部查询

[root@docker201.com ~] docker run --name nginx2 -d -v /webroot:/usr/share/nginx/html nginx

110c897a7acc684db41d1272361dbc248094d5eae87a2fdb85d7cb1e06214866

[root@docker201.com ~]docker run --name nginx3 -d -v /webroot:/usr/share/nginx/html nginx

29966d4ef179964fd7f4750b440151e2af129f7786fd5444563268e8f744ca12

宿主机查询

[root@docker201.com ~]

curl 172.17.0.3

hello i am hostSO

[root@docker201.com ~]

curl 172.17.0.4

hello i am hostSO

在宿主机上改首页webroot,映射的容器页会改变

卷全部宕掉不受影响

[root@docker201.com ~]

docker rm -f nginx1

nginx1

[root@docker201.com ~]

docker rm -f nginx2

nginx2

[root@docker201.com ~]

docker rm -f nginx3

nginx3

[root@docker201.com ~]

cat /webroot/index.html

hell i am hostSO

关闭所有容器

[root@docker ~]# docker ps -a | grep -v 'CONTAINER' |awk '{print $1}' |xargs docker rm -f

50d7933c408e

8cc57c5e984c

50a00c9e46a1

删除所有的容器

docker rm -f `docker ps --all | awk 'NR!=1{print $1}'`

关闭某一个容器

[root@docker ~]# docker rm -f `docker ps -a -q`

8cc57c5e984c

三、数据卷容器

实现容器之间共享数据

 

导入centos-6.4-docker.tar.bz2镜像

[root@docker ~]# docker load < /docker/docker-images/centos-6.4-docker.tar.bz2

[root@docker ~]# docker run -it -v /dbdata --name dbdata centos /bin/bash

[root@docker ~]# docker images

539c0211cd76 3.098309 years ago 313.8 MB

[root@docker ~]# docker tag 539c0211cd76 centos6

[root@docker ~]# docker images

centos6 latest 539c0211cd76 3.098311 years ago 313.8 MB

1.创建数据卷容器

[root@docker ~]# docker run -it -d -v /dbdata --name dbdata centos7.6 /bin/bash

bash-4.1# ls

bin dbdata etc lib media opt root selinux sys usr

boot dev home lib64 mnt proc sbin srv tmp var

[root@docker ~]# docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

a8e8ca62ac4e centos6:latest "/bin/bash" 36 seconds ago Exited (0) 1 seconds ago dbdata

登录

docker exec -it dbdata /bin/bash

[root@f6ba57f46da2 /]# cd /data

[root@f6ba57f46da2 data]# ls

[root@f6ba57f46da2 data]# touch aa.txt

[root@f6ba57f46da2 data]# echo 1432 >> aa.txt

[root@f6ba57f46da2 data]# exit

2.使用数据卷容器

[root@docker ~]# docker run -it -d --volumes-from dbdata --name web1 centos7.6 /bin/bash

docker exec -it web1 /bin/bash

[root@b6a6fc01befc /]# ls /

anaconda-post.log data dev home lib64 mnt proc run srv tmp var

bin data1 etc lib media opt root sbin sys usr

[root@b6a6fc01befc /]# ls /data

[root@b6a6fc01befc /]# exit

登录

docker exec -it web1 /bin/bash

[root@b6a6fc01befc /]# cd /data

[root@b6a6fc01befc data]# ls

aa.txt

[root@b6a6fc01befc data]# exit

[root@docker ~]# docker run -it -d --volumes-from dbdata --name web2 centos6 /bin/bash

bash-4.1# ls

bin dbdata etc lib media opt root selinux sys usr

boot dev home lib64 mnt proc sbin srv tmp var

bash-4.1# echo test > dbdata/index.html

bash-4.1# cat dbdata/index.html

test

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿迪是否

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值