iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 15
0
DevOps

現代化小白也要嘗試的容器手札系列 第 15

Day15. Docker Volume 入門示範

鬆獅容器小白15連拍

https://ithelp.ithome.com.tw/upload/images/20201005/20025481mBeO5XqPJ8.jpg

Docker Volume

之前一直討論到每個容器本身彼此獨立且可拋棄式特性真好,但...如果這容器跑的是一個儲存客戶資料的資料庫呢?

可能因為任何原因想要升版,所以執行中的SQL9.0容器關掉,重跑一個SQL9.5的容器,但資料庫裡的資料不就不翼而飛了><,所以這時Volume的功能就用上了,簡單來說它就是用來長期儲存容器內的檔案資料之用,這樣才不會被飛踢知道嗎?透過圖解可以更清楚理解動向:

看圖說故事,當使用volume時,docker會在本機上隨機新增一個資料夾(Local storage area),一般會在 /var 底下,然後讓這個資料夾跟容器中的某個資料夾串連起來。

因為他們互聯關係已經建立,所以當你自己容器內已經關聯的資料夾有任何變更時,本地資料夾也會跟著改變,而重中之重,當容器被刪除後,資料夾檔案實際仍然是保留的,故我們就可以利用此特性來做更版運帷等應用了。
https://ithelp.ithome.com.tw/upload/images/20200920/2002548130h0VardKf.png

docker volume create --name gydkdata(多看到了一個gydkdate,就這樣誤打了)
docker volume ls

https://ithelp.ithome.com.tw/upload/images/20200920/20025481e6zrWVGogo.png

/var/docker# mkdir gydkdata (隨性示範,實際建立路徑自己決定)
https://ithelp.ithome.com.tw/upload/images/20200920/20025481yaRXDbZ3F7.png

docker images 物色一下等等就用ubuntu與Centos兩兄弟來示範
https://ithelp.ithome.com.tw/upload/images/20200920/20025481lVMkYcziZ2.png

docker volume rm gydkdate (小弟的畫面清單潔癖,看到多餘的就是想要吖M)
https://ithelp.ithome.com.tw/upload/images/20200920/200254815Wss5PYcoK.png

docker run -v gydkdata:/var/docker/gydkdata -it ubuntu ls -l /var/docker/gydkdata
docker run -v gydkdata:/var/docker/gydkdata -it ubuntu touch /var/docker/gydkdata/teatfile
docker run -v gydkdata:/var/docker/gydkdata -it ubuntu ls -l /var/docker/gydkdata

https://ithelp.ithome.com.tw/upload/images/20200920/20025481swf270UWri.png

docker container ls (確認已經沒有容器在上面作弊)
https://ithelp.ithome.com.tw/upload/images/20200920/200254811FiueD93As.png

docker run -v gydkdata:/var/docker/gydkdata -it centos (進入到centos肚子中)
cd /var/docker/gydkdata/
ls
https://ithelp.ithome.com.tw/upload/images/20200920/20025481S8wN5Zb8GA.png

腦補一下,實際上volume本身又有區分兩種:

  • Host volume直接使用host上的目錄做為volume
  • Named volume則是使用docker產生並可管理的資料夾做為volume (本篇示範V)

上一篇
Day14. Docker Registry on GCR 實測
下一篇
Day16. 簡單備份還原與遷移 Docker 容器
系列文
現代化小白也要嘗試的容器手札30

尚未有邦友留言

立即登入留言