1. 程式人生 > >『中級篇』數據持久化之bind Mounting(35)

『中級篇』數據持久化之bind Mounting(35)

doc 持久 文件內容 tps 主頁 href nsh touch 原來

>原創文章,歡迎轉載。轉載請註明:轉載自IT人故事會,謝謝!
>原文鏈接地址:『中級篇』數據持久化之bind Mounting(35)

回憶上次的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/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)