『中級篇』數據持久化之bind Mounting(35)
阿新 • • 發佈:2018-09-02
doc 持久 文件內容 tps 主頁 href nsh touch 原來
>原創文章,歡迎轉載。轉載請註明:轉載自IT人故事會,謝謝!
>原文鏈接地址:『中級篇』數據持久化之bind Mounting(35)
回憶上次的volume的方式,源碼https://github.com/limingios/docker No.3 方便學習數據持久化存儲
- Dockerfile中
VOLUME ["/var/lib/mysql"] - 別名:持久化地址的方式
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/sh cd /usr/share/nginx/html #在數據持久化目錄裏面增加文件aaa.test touch aaa.test exit
cd ~/labs/docker-nginx/
#查看路徑已經多了一個文件aaa.test
ls
#修改aaa.test文件內容
vim aaa.test
sudo docker exec -it web /bin/sh
sudo docker exec -it web /bin/sh
#容器內可以看到數據持久化的信息
more aaa.test
個人主頁:IT人故事會
PS:bind mount 需要指定 host 文件系統的特定路徑,這就限制了容器的可移植性,當需要將容器遷移到其他 host,而該 host 沒有要 mount 的數據或者數據不在相同的路徑時,操作會失敗。但是我感覺已經很方便了。
『中級篇』數據持久化之bind Mounting(35)