Docker数据卷管理及优化

一、基础概念

        1.docker数据卷是一个可供容器使用的特殊目录,它绕过了容器的文件系统,直接将数据存在宿主机上。

        2.docker数据卷的作用:

                数据持久化:即使容器被删除或重建数据卷中的数据仍然存在

                数据共享:多个容器可以同时挂载同一个数据卷实现数据的共享和交互

                独立于容器生命周期:数据卷的生命周期独立于容器,不受容器的启动、停止和删除的影响。

        3.使用数据卷的原因:

                docker分层文件系统:

                        性能差并且生命周期和容器相同

                docker提供两种卷:

                        bind mount

                        docker managed volume

        4.bind mount数据卷:

                将主机的目录文件或文件mount到容器里

                使用-v选项指定路径,如果-v指定的路径不存在挂载时会自动创建

                示例:

[root@docker ~]# docker run -it --rm \
-v /tmp/data1:/data1 \
-v /tmp/data1:/data2:ro \
-v /etc/passwd:/data/passwd:ro busybox
/ # tail -n 3 /data/passwd
lee:x:1000:1000:lee:/home/lee:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
nginx:x:1001:1001::/home/nginx:/sbin/nologin
/ # touch /data1/leefile1
/ # touch /data2/leefile1
touch: /data2/leefile1: Read-only file system

        5.docker managed数据卷:

                bind mount必须指定host文件系统路径限制了移植性

                docker managed volume不需要指定mount源,docker自动为容器创建数据卷目录

                默认创建的数据卷目录都在/var/lib/docker/volumes中

                如果挂载时指向容器内已有的目录,原有数据会被复制到volume中

                示例:

[root@docker volumes]# docker run -d --name mysql -e MYSQL_ROOT_PASSWORD='lee'
mysql:5.7
[root@docker volumes]# ls -l /var/lib/docker/volumes
总用量 0
drwx-----x 3 root root 19 8月 20 16:34
ad74662b8d6bb6fdcc6e82925ae9942b94bac5f9da4bd52b0a14ac451ae9ef75
[root@docker volumes]# touch
ad74662b8d6bb6fdcc6e82925ae9942b94bac5f9da4bd52b0a14ac451ae9ef75/_data/leefile
[root@docker volumes]# docker exec -it mysql bash
bash-4.2# cd /var/lib/mysql
bash-4.2# ls
auto.cnf client-cert.pem ib_logfile0 ibtmp1 mysql.sock
public_key.pem sys
ca-key.pem client-key.pem ib_logfile1 leefile performance_schema server-
cert.pem
ca.pem ib_buffer_pool ibdata1 mysql private_key.pem server-
key.pem
bash-4.2# pwd

                docker volume prune:清理未使用的docker数据卷

        建立数据卷:

                docker volume  create test,这条命令执行会在默认的数据卷目录下(/var/lib/docker/volumes/)创建test目录,并在该目录下创建_data目录

        查看数据卷:

                docker volume ls,执行这条命令会查看到上述创建的数据卷

        使用建立的数据卷:

                docker run -d --name web1 -p 80:80 -v test:/usr/share/nginx/html nginx

        6.数据卷容器:

                是docker中一种特殊的容器,主要方便的在多个容器之间共享数据卷。

                建立数据卷容器:

[root@docker ~]# docker run -d --name datavol \
-v /tmp/data1:/data1:rw \
-v /tmp/data2:/data2:ro \
-v /etc/resolv.conf:/etc/hosts busybox

                使用数据卷容器:

                        docker run -it --name test --rm --volumes-from datavol  busybox

        7.bind mount数据卷和docker managed数据卷对比:

                相同点:两者都是host文件系统中的某个路径

                不同点

        8.备份与迁移数据卷:

                建立容器并指定使用卷要备份的容器:

                docker run --volumes-from  datavol  -v `pwd`:/backup  busybox  tar zcf /backup/data1.tar.gz  /data1        将当前目录挂载到本地容器中用于和容器交互保存要备份的容器,备份数据到本地

                数据恢复:

docker run -it --name test -v leevol1:/data1 -v `pwd`:/backup busybox /bin/sh -
c "tar zxf /backup/data1.tar.gz;/bin/sh"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值