『中级篇』数据持久化之bind Mounting(35)
2018-09-19 11:20:09
李明
  • 访问次数: 382
  • 注册日期: 2018-07-09
  • 最后登录: 2022-11-17

原创文章,欢迎转载。转载请注明:转载自 IT人故事会,谢谢!
原文链接地址: 『中级篇』数据持久化之bind Mounting(35)

回忆上次的volume的方式,源码 github.com/limingios/d… 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 复制代码

1

sudo service docker restart docker build -t liming/nginx . sudo docker image ls 复制代码

1
1

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

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

1
1
1

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

#删除原来的容器 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/sh cd /usr/share/nginx/html #在数据持久化目录里面增加文件aaa.test touch aaa.test exit 复制代码

1

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

1
1
1

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

1

个人主页: IT人故事会

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

image