一篇文章带你搞懂Docker存储

存储驱动

由storage driver管理的镜像层和可读写层

数据卷

  • 概念

Data Volume本质上是Data Host文件系统中的文件或目录,能够被直接mount到容器的文件系统运维工程师系统中。

  • 特点

1.Data Vodockerslume是目录或文件,而非没有nginx安装与配置详解格式化的磁盘

2.容器可以容器云读写Volume中的数据

3.volume数据可以永久保存,html即使使用它的容器已经销毁

因为Volume是docker host文件系统的一部分,所以volume的容量取决于文件系统当前未使用html是什么意思的空间,目前没有办法设置。

  • Data Volume类型

1.bind mount

2.docker managed volume

Bind Mount

  • 概念
  • bind mount是将host上已存在的目录或文件 mount到容器

    • 挂载数据卷

    -vhtml:通过-v参数将host的目录挂载到容器中

    格式: -v &l系统运维工资一般多少t;host path>:<container path>

    -vlinux常用命令 ~/html:/usr/share/nginx/html 挂载源:挂载点

    • 案例1(挂载源是目录)

    #会覆盖容器原有的数据

    1.更html5换nginx容器的index.html文件

    [root@docker ~]# mkdir html

    [root@docker html]# echo "this is a web server" >index.html

    [root@docker ~]# docker run -d -p 80:80 --name web -v ~/html:/usr/share/nginx/html nginx

    [root@docker ~]# cuhtml是什么意思rl 127.0.0.1

    this is a web server

    2.更新宿主机文件

    [root@docker html]# echo "this is a index page" >index.html

    [root@docker ~]# curl 127.0.0.1

    this is a index page

    3.删除容器

    [root@docker html]# docker rm -f web

    [root@docker ~]# ls

    html

    • 案例2(挂载源是文件)

    #只是修改容器中原有数据目录的某个文件

    [root@docker html]# docker run -d -p 80:80 --name web -v ~/html/indocker常用命令dex.html:/usr/sharnginx安装与配置详解e/nginx/html/index.html nginxlinux系统

    • 数据读写权限

    1.默认是可读可写

    [root@docker ~]# docker run -d -p 80:80 --name web -v ~/html:/usr/share容器技术/nginxdockerfile/html nginginx是什么意思nx

    2.设置只读权nginx启动命令

    [root@docker html]# docker run -docker镜像d -p 80:80 --name web -v ~/html:/usr/share/nginx/hdocker是干什么的tml:ro nginx

    • 特性

    1.方便数据迁移和备份

    2.容nginx反向代理器移植性差

    Docker managed vo系统运维工作内容lume

    • 概念

    docker managed volume与bind mo容器存储unt的html网页制作最大区别是不需要指定mo容器人unt源,指明mount point就可以了

    • 挂载数据卷

    格式: -v

    -v /usr/share/nginx/html

    • 案例

    #启动容器

    [root@docker ~]# docker run -d -p 80:80 --name web -v /usr/sharelinux必学的60个命令/nginx/html nginx

    [root@docker ~]# docker inspect web|grep -Alinux系统 10 -i mounts

    "Mounts": [

    {

    "Type": "volume",

    "Name": "e48b3b184307306f449310b3d7604aee2b1754d43d305310a01577e38589e08f",

    "Source": "/var/lib/docker/volumes/e48b3b184307306f449310b3d7604aee2b1754d43d30531nginx0a01577e3858docker是干什么的9e08f/_data",

    "Destination": "/usr/share/nginx/html",

    "Driver": "loc容器的高是指容器外面的高al",

    "Mode": "",

    "RW容器中有某种酒精含量的酒精溶液": true,

    "Propagation": ""

    }

    [root@docker _data]# ls /var/lib/docker/volumes/e48b3b184307306f449310b3d7604aeedocker2b1754d43d305310a01577e38589e08linux系统安装f/_data

    #更新挂载源数据

    [root@docker _data]# echo "this is a web senginx负载均衡rver">ind容器的高是指容器外面的高ex.html

    #docker inspect

    [root@docker ~]# docker inspect web

    #docker volume

    [root@docker ~]# docker volume lslinux操作系统基础知识

    [root@docker ~]# docker volulinux必学的60个命令me insphtml简单网页代码ect 6a80f16365009629alinux操作系统基础知识4e99184d377f482b23fb7420002dc536808843834ccbd35

    • binddockerhub mount 和 docker managed volumdockerhube对比

    (1)相同点: 两者都是host文件linux删除文件命令系统中的某个路径

    (2)不同html文件怎么打开点:

    不同点

    bin容器的容积怎么计算d mount

    docker managed volume

    volume位置

    可任意指定

    /var/lib/docker/vodockers什么品牌lumes/

    对已有挂载点的影响

    隐藏并替换为volume

    原有数据复制到volume

    是否支持单个文件

    支持

    不支持,只能是目录

    权限控制

    可设置为只读,默认为读写权限容器

    无控制,均为读写权限

    移植性

    移植性弱,与host path绑定

    移植性强,无须指定host目录

    容器之间共享数据

    bind容器苗 mount

    #创建三个容器,将同一个共享目录分别挂载到容器目录里

    [root@docker ~]# docker run -d -p 80:80 --name web1 -v ~/html:/usr/share/nginx/html nginx

    [root@docker ~]# donginx怎么读cker run -d -p 81:80 --name web2 -v ~/html:/usr/share/nginx/html nginx

    [root@docker ~]# docker run -d -p 82:80 --name web3 -v ~/html:/usr/share/nginx/html nginx

    #分别测试三个容器

    [root@docker ~]# curl 127.0.0.1:80

    this is a web server

    [root@docker ~]# curl 127.0.0.1:81

    this is a web server

    [root@docker ~]# curl 12html代码7.0.0.1:82

    this is a web server

    #修改volume中的数据,再次测试

    [root@docker html]# echo "容器的容积怎么计算this is a index page"容器的容积怎么计算>index.html

    [root@docker html]# curl 127.0.0.1:80

    this is a index page

    [root@docker html]# cur容器碎片l 1linux27.0.0.1:81

    this isnginx负载均衡 a index page

    [root@docker html]# curl 1容器苗27.0.0.1:82

    this is a index page

    volume container(数据卷容器)

    • 概念

    vodocker安装部署lume container是专门为其他容器提供volume的容器,提供的卷可以使bihtml简单网页代码nd mlinux系统ount,也可以是docker managed volume。

    • 案例

    1. 使用bindnginx mount创建一个volume container

    [root@docker ~]# docker create --name vc_data \

    > -v ~/html:/usr/share/nginx/html \

    > -v /root/tools:/tlinux系统oo容器是什么ls \nginx代理

    > busybox

    #查看容器的volume

    [root@docker ~]# docker inspect vc_data|grep -A 20 -i "mounts"

    #其他容器使用--volumes-from使用这个容器提供的volume

    [root@docker ~]# docker run -d -p 80:8html文件怎么打开0 --name web1 --volumes-from vc_data nginx

    [root@docker ~]# dockhtml网页制作er run -d -p 81:80 --name web2 --volumes-from vc_data nginx

    [root@docker ~]# docker run -d -p 82:80 --name web3 --volumes-from vc_data nginx

    #测试容器

    [root@docker ~]# curl 127.0.0.1

    this is a index pagelinux重启命令

    [root@docker ~]# cnginx怎么读url 127.0.0.1:81

    this is a index page

    [root@docker ~]# curl 127.0.0.1:82

    this is a index page

    2.使用docker managed volume创建一个volume container

    [root@docker ~]# docker create --name vc_data \

    > -v /htmlusrnginx是什么意思/share/nlinux系统ghtml5inx/html \

    > -v /tools \

    > busy容器人box

    #查看容器的volume

    [root@docker ~]# docker inspect vc_data|grep -A 20 -i "mounts"

    #其他容器使用--dockersvolumes-from使用这个容器提供的volume

    [root@docker ~]# docker run -d -p 80:80 --name web1 --volumes-from vc_datnginx安装与配置详解a nginx

    [root@docker ~]# docker run -d -p 81:80 --name web2 --volumes-from vc_data nginx

    [root@docker ~]# docker run -d -p 82:80 --name web3 --volumes-from vc_data nginx

    #添加index页面到数据卷

    #测试容器

    [root@docker ~]# curlinuxl 127.0.0.1

    this is a i容器是什么ndex page

    [root@docker ~]# curl 127.0.0.1:81

    this is a index page

    [root@docker ~]# curl 127.0.0.1:82

    this is a index page

    • 特点

    1.与bind mount相比,不必为每一个容器指定 host pathdockers什么品牌,实现了容器与host的解耦

    2.使用volumhtmle container的容器,其mount point都是一致的,有利于配置的规范和标准化

    Data volume 生命周期管理

    • 备份

    概念:

    系统运维工程师volume的备份实际上就是备份host文件系统中的目录和文件

    案例:

    #创建容器

    docker run -d --name demo -v ~/html:/usr/share/nginx/html nginx

    #备份host目录

    cp容器英文 -r html html_bak

    • 恢复

    概念:

    数据损坏了,直接把备份的数据linux系统还原即可

    案例:

    #删除挂载源目录

    [root@docker /]# rm -rf html

    #再次访问容器找不到页面

    [root@k8s-master ~]# curl系统运维工程师 172.17.0.2

    <html>

    <head><title>403 Forbidden</title>容器英文</head>

    <body>

    <center>&lnginx启动命令t;h1>403 Forbidden&llinux常用命令t;/h1></center>

    <hr><center>容器技术;nginx/1.21.5</center>

    &lhtmlt;/body>

    &docker常用命令lt;/html>

    #恢复挂载源目录

    [root@docker /]# cp -r html_bak html

    #重启容器

    [root@docker /]# docker restart demdockers什么品牌o

    #再次nginx反向代理访问容器

    [root@k8s-master ~]# curl 172.17.0.2

    this is a web server

    • 迁移

    概念:

    将原有的volume挂载到新的容器目录

    案例:

    1.在本地进行数据迁移

    #启动容器

    dnginx怎么读ocker run -d -p 80:80 --name web -v ~/html:/usr/share/linux重启命令nginx/html nginx

    #迁移数据

    cp html /data/

    #再次启动容器容器的高是指容器外面的高

    docker run -d -p 80:80 --name web -v /data/html:/usr/share/nginx/html

    2.将数据迁移到远程宿主机

    #将数据目录拷贝到远程容器的高是指容器外面的高宿主机

    scp -r html root@192.168.12.208:/rodocker菜鸟教程ot/

    #启动ngidocker镜像nx容器

    [root@docker ~]# docker run -d --name web -v ~/html:/usr/sh容器是什么are/nginx/html nginx

    #测试容器

    [root@docker ~]# curl 172.17.0.linux3

    this is a index page

    • 销毁

    概念:

    我们可以删除不再需要的volume

    bind mount:

    docker不会销毁binnginx安装与配置详解d moundocker安装部署t,需要由host来进行删除

    docker managed volume:

    #docker rm : 不会删除容器的volume

    #docker rm -v <c容器苗ontainerID>:容器人 可以删除容器的volume

    #docker volume rm <volumeName>: 删除volume

    #docker volume rm $(docker volume ls -q): 批量删除volume

    有问题欢迎指正

    链接:​​https://k系统运维工资一般多少e.qq.clinux操作系统基础知识om/course/4300856?tuin=d8aedf68​​