五大门户网站,办公室装修实景拍摄图,网页设计与制作教学计划,制作好网站一、基础概念 1.docker数据卷是一个可供容器使用的特殊目录#xff0c;它绕过了容器的文件系统#xff0c;直接将数据存在宿主机上。 2.docker数据卷的作用#xff1a; 数据持久化#xff1a;即使容器被删除或重建数据卷中的数据仍然存在 数据共享#xff1a;多个容器可以…一、基础概念 1.docker数据卷是一个可供容器使用的特殊目录它绕过了容器的文件系统直接将数据存在宿主机上。 2.docker数据卷的作用 数据持久化即使容器被删除或重建数据卷中的数据仍然存在 数据共享多个容器可以同时挂载同一个数据卷实现数据的共享和交互 独立于容器生命周期数据卷的生命周期独立于容器不受容器的启动、停止和删除的影响。 3.使用数据卷的原因 docker分层文件系统 性能差并且生命周期和容器相同 docker提供两种卷 bind mount docker managed volume 4.bind mount数据卷 将主机的目录文件或文件mount到容器里 使用-v选项指定路径如果-v指定的路径不存在挂载时会自动创建 示例
[rootdocker ~]# 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中 示例
[rootdocker volumes]# docker run -d --name mysql -e MYSQL_ROOT_PASSWORDlee
mysql:5.7
[rootdocker volumes]# ls -l /var/lib/docker/volumes
总用量 0
drwx-----x 3 root root 19 8月 20 16:34
ad74662b8d6bb6fdcc6e82925ae9942b94bac5f9da4bd52b0a14ac451ae9ef75
[rootdocker volumes]# touch
ad74662b8d6bb6fdcc6e82925ae9942b94bac5f9da4bd52b0a14ac451ae9ef75/_data/leefile
[rootdocker 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中一种特殊的容器主要方便的在多个容器之间共享数据卷。 建立数据卷容器
[rootdocker ~]# 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