docker容器数据持久化

数据卷:

1、将宿主机目录挂载到容器目录

数据卷的特点:

01、在容器启动初始化时,如果容器使用的宿主机挂载点有数据,这些数据就会拷贝到容器中

02、数据卷可以在容器直接共享和重用

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

04、数据卷的变化不会影响镜像的更新

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

示例:

1-1、创建一个web01的容器,挂载宿主机根目录下的/container_data/web到容器目录的data下

    docker run -itd --name web01 -v /container_data/web:/data Ubuntu

1-2、创建一个web02的容器,挂载宿主机根目录下的/container_data/web到容器目录到data下

    docker run -itd --name web02 -v /container_data/web:/data Ubuntu

1-3、在宿主机被挂载目录下创建一个文件,在容器内查看,修改后再次查看

    echo hello >/container_data/web/index.php
    docker exec web01 ls /data/
    docker exec web02 ls /data/
    echo 123123 >>/cotainer_data/web/index.php
    docker exec web01 ls /data/
    docker exec web02 ls /data/

2、容器数据卷(把一个容器作为数据卷挂载到其他容器共享)

2-1、创建一个名为data的数据卷容器、创建一个web01的容器,并挂在容器数据卷data

    docker run -itd  -v /data --name data ubuntu
    docker run -itd --name web01 --volumes-from data ubuntu

2-2、在数据卷容器data中添加文件、查看数据卷中是否成功添加文件、查看web01中挂在的数据、再创建容器挂在容器数据卷、查看容器web02的数据。

    docker exec data touch /data/index.php
    docker exec data ls /data/
    docker exec data ls /data/
    docker run -itd --name web02 -volumes-from data ubuntu
    docker exec web02 ls /data/

4、管理应用程序数据

4-1:

1> : -Volume 管理数据卷:(可以多个容器共享一个数据卷)

    docker volume create nginx-vloume
    docker volume ls (查看数据卷)
    docker volume inspect nginx-volume (查看数据卷想详细信息)
    docker volume  --help

2>用数据卷创建一个容器

    docker run -itd --name nginx1 -p88:80 --mount src=nginx-volume,dst=/var/www/html richarvey/nginx-php-fpm
    docker volume inspect nginx-volume
    ls /var/lib/docker/volumes/nginx-volume/_data (查看数据卷内到内容)

3>不指定数据卷:(匿名卷)

    docker run -itd --name nginx1 -p88:80 --mount src=,dst=/var/www/html richarvey/nginx-php-fpm

4>清理:

    docker container stop nginx
    docker container rm nginx1
    docker volume rm  nginx-volume

5>如果没有指定数据卷(匿名卷),系统自动创建。建议使用--mount参数,更通用



4-2: bind mount

1>用卷创建一个容器

    docker run -itd --name=nginx11 --mount type=bind,src=/www/html,dst=/var/www/html richarvey/nginx-php-fpm
    docker run -itd --name=nginx12 -v /www/html/:/var/www/html richarvey/nginx-php-fpm
2>验证绑定:

    docker inspect nginx11
3>清理:

    docker container stop nginx11
    docker container rm nginx11
4>注意:

    a、如果源文件/目录不存在,不会自动创建,抛出error

    b、如果挂载目标在容器中是一个非空目录,则改目录现有文件回被隐藏
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值