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、如果挂载目标在容器中是一个非空目录,则改目录现有文件回被隐藏

猜你喜欢

转载自blog.csdn.net/weixin_47003048/article/details/108445906
今日推荐