为了账号安全,请及时绑定邮箱和手机立即绑定

『中级篇』数据持久化之bind Mounting(35)

标签:
Docker

回忆上次的volume的方式,源码https://github.com/limingios/docker  No.3 方便学习数据持久化存储

  1. Dockerfile中
    VOLUME ["/var/lib/mysql"]

  2. 别名:持久化地址的方式
    docker run -v mysql:/var/lib/mysql

Bind Mouting
  • 代码

docker run -v /home/aaa:/root/aaa
  • 例子

cd ~cd labs/docker-nginx/
more Dockerfile

sudo service docker restart
docker build -t liming/nginx .
sudo docker image ls

  • 容器生成不适用数据持久化

sudo docker run -d -p 80:80 --name web liming/nginx
curl 127.0.0.1
ip a

  • 容器生成使用数据持久化

#删除原来的容器sudo docker rm -f web#容器内的80对外部的80,pwd对应/usr/share/nginx/html的sudo docker run -d -p 80:80 -v $(pwd):/usr/share/nginx/html --name web liming/nginx  
curl 127.0.0.1
sudo docker exec -it web /bin/shcd /usr/share/nginx/html#在数据持久化目录里面增加文件aaa.testtouch aaa.testexit

cd ~/labs/docker-nginx/#查看路径已经多了一个文件aaa.testls#修改aaa.test文件内容vim aaa.test
sudo docker exec -it web /bin/sh

sudo docker exec -it web /bin/sh#容器内可以看到数据持久化的信息more  aaa.test

PS:bind mount 需要指定 host 文件系统的特定路径,这就限制了容器的可移植性,当需要将容器迁移到其他 host,而该 host 没有要 mount 的数据或者数据不在相同的路径时,操作会失败。但是我感觉已经很方便了。



作者:IT人故事会
链接:https://www.jianshu.com/p/e3d0d56a8d92

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消