Skip to content

dcoker存储

dcoker存储

目录

[toc]

容器数据持久化

1、常见容器数据持久化的2种方法

bash
容器数据持久化Docker提供2种方式将数据从宿主机挂载到容器中:volumes:Docker管理宿主机文件系统的一部分(/var/lib/docker/volumes)。bindmounts:将宿主机上的任意位置的文件或者目录挂载到容器中。(一般这种方式用的多些!)volumes示例:1、创建数据卷# docker volume create nginx-vol# docker volume ls# docker volume inspect nginx-vol2、使用数据卷# docker run -d --name=nginx-test --mount src=nginxvol,dst=/usr/share/nginx/html nginx# docker run -d --name=nginx-test -v nginxvol:/usr/share/nginx/html nginxbindmounts示例:1、挂载宿主机目录到容器# docker run -d --name=nginx-test --mount type=bind,src=/app/wwwroot,dst=/usr/share/nginx/htmlnginx# docker run -d --name=nginx-test -v /app/wwwroot:/usr/share/nginx/htmlnginx

2、实战演示:bind mounts方式进行容器数据持久化(常用)

1、命令:

bash
bindmounts示例:#挂载宿主机目录到容器方法1:-v参数(推荐)# docker run -d --name=nginx-test -v /app/wwwroot:/usr/share/nginx/htmlnginx方法2:--mount参数# docker run -d --name=nginx-test --mount type=bind,src=/app/wwwroot,dst=/usr/share/nginx/htmlnginx

2、测试过程

bash
方法1:-v参数测试过程1.查看当前环境[root@docker ~]# docker ps CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES[root@docker ~]# mkdir -p /app/wwwroot[root@docker ~]# echo "i love you xyy">>/app/wwwroot/index.html2.创建容器[root@docker ~]# docker run -d --name=nginx-test-p8001:80-v/app/wwwroot/:/usr/share/nginx/htmlnginxb9f8073b51fbff5498581e13cdb62c2c8f678af4458328253c1b33892a1926b13.查看效果[root@docker ~]# docker psCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMESb9f8073b51fbnginx"/docker-entrypoint.…"17secondsagoUp15seconds0.0.0.0:8001->80/tcp,:::8001->80/tcpnginx-test[root@docker ~]# curl 0.0.0.0:8001iloveyouxyy4.此时我们更新下宿主机/app/wwwroot/index.html文件内容,再来观测下效果:[root@docker ~]# echo 520 >>/app/wwwroot/index.html[root@docker ~]# curl 0.0.0.0:8001iloveyouxyy5205.我们再更改下容器里面的index.html文件,再次观测下效果:[root@docker ~]# docker exec -it nginx-test bashroot@b9f8073b51fb:/#cat/usr/share/nginx/html/index.htmliloveyouxyy520root@b9f8073b51fb:/#echo1314>>/usr/share/nginx/html/index.htmlroot@b9f8073b51fb:/#exitexit[root@docker ~]# curl 0.0.0.0:8001 #符合预期效果,可以看到在容器里更改数据后,数据也会同步到宿主机的/app/wwwroot/index.html文件里的iloveyouxyy5201314[root@docker ~]# cat /app/wwwroot/index.html iloveyouxyy5201314测试结束!
bash
再测试之前,我们把环境复原下,模拟一个纯净的环境:方法1:--mount参数测试过程1.查看当前环境[root@docker ~]# docker ps CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES[root@docker ~]# mkdir -p /app/wwwroot[root@docker ~]# echo "i love you xyy">>/app/wwwroot/index.html2.创建容器[root@docker ~]# docker run -d -p 8001:80 --name=nginx-test--mounttype=bind,src=/app/wwwroot,dst=/usr/share/nginx/htmlnginx4c8624511c3d9a9eac4eacaf42f2ae55ab1f64758d784f46a7db1db637f25f393.查看效果[root@docker ~]# curl 0.0.0.0:8001iloveyouxyy4.此时我们更新下宿主机/app/wwwroot/index.html文件内容,再来观测下效果:[root@docker ~]# echo 520 >>/app/wwwroot/index.html[root@docker ~]# curl 0.0.0.0:8001iloveyouxyy5205.我们再更改下容器里面的index.html文件,再次观测下效果:[root@docker ~]# docker exec -it nginx-test bashroot@2a1b8641207b:/#cat/usr/share/nginx/html/index.htmliloveyouxyy520root@2a1b8641207b:/#echo1314>>/usr/share/nginx/html/index.htmlroot@2a1b8641207b:/#exitexit[root@docker ~]# curl 0.0.0.0:8001 #符合预期效果,可以看到在容器里更改数据后,数据也会同步到宿主机的/app/wwwroot/index.html文件里的iloveyouxyy5201314[root@docker ~]# cat /app/wwwroot/index.html iloveyouxyy5201314[root@docker ~]#测试结束!

3、实战演示:volumes方式进行容器数据持久化

1、用法:

bash
volumes示例:1、创建数据卷# docker volume create nginx-vol# docker volume ls# docker volume inspect nginx-vol2、使用数据卷# docker run -d --name=nginx-test --mount src=nginx-vol,dst=/usr/share/nginx/html nginx# docker run -d --name=nginx-test -v nginx-vol:/usr/share/nginx/html nginx

2、测试过程

bash
再测试之前,我们把环境复原下,模拟一个纯净的环境:[root@docker ~]# docker rm -f $(dockerps-aq)b9f8073b51fb[root@docker ~]# rm -rf /app/wwwroot/1、创建数据卷root@docker~]#dockervolumecreatenginx-volnginx-vol[root@docker ~]# docker volume lsDRIVERVOLUMENAMElocalnginx-vol[root@docker ~]# docker volume inspect nginx-vol[{"CreatedAt":"2021-12-08T11:43:01+08:00","Driver":"local","Labels":{},"Mountpoint":"/var/lib/docker/volumes/nginx-vol/_data","Name":"nginx-vol","Options":{},"Scope":"local"}]2、使用数据卷创建nginx-test容器:[root@docker ~]# docker run -d --name=nginx-test-p8001:80--mountsrc=nginx-vol,dst=/usr/share/nginx/html/nginxba3e8676bd36a4ec30398039f49ee21cce5d9edafa9b7b5d9d15f0a96da7636a或者使用命令:([root@docker ~]# docker run -d --name=nginx-test-p8001:80-vnginx-vol:/usr/share/nginx/html/nginx)[root@docker ~]# docker psCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMESba3e8676bd36nginx"/docker-entrypoint.…"16secondsagoUp14seconds0.0.0.0:8001->80/tcp,:::8001->80/tcpnginx-test[root@docker ~]# ls /var/lib/docker/volumes/nginx-vol/_data/50x.htmlindex.html

4、注意事项

1.制作镜像

阿良说:

制作镜像:

1、启动容器之后的应用程序服务产生的数据尽量放到一个目录/data

2、构建不是将已经生成的应用程序数据打包进去的

2.容器数据的持久化

注意:容器重启后,里面的数据是不会丢失的,但删除后,里面的数据就彻底丢失了。

jenkins、gitlab使用docker安装的都是采用-v将他们自身产生的数据持久化到宿主机的。

关于我

我的博客主旨:

  • 排版美观,语言精炼;
  • 文档即手册,步骤明细,拒绝埋坑,提供源码;
  • 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!

🍀 微信二维码

x2675263825 (舍得), qq:2675263825。

🍀 微信公众号

《云原生架构师实战》

🍀 csdn

https:

版权:此文章版权归 One 所有,如有转载,请注明出处!

链接:可点击右上角分享此页面复制文章链接

上次更新时间:

最近更新