Docker容器數據卷技術介紹
Docker容器數據卷技術介紹
一、卷技術介紹
現在我們知道docker的理念就是把應用和環境打包成鏡像,方便我們去運行容器。
但是現在有一個問題,比如我容器裡的mysql存瞭好多的數據,那萬一容器被刪除,數據是不是就沒瞭?這顯然不合適。
於是,一個新的需求產生瞭:將數據存儲在容器之外的地方,比如本地。對應的解決方案就是卷技術瞭,通過它,將容器中產生的數據同步到本地,讓容器之間可以共享數據。
卷技術,說白瞭就是目錄的掛載,將容器內的目錄掛載到linux上。如圖所示,將容器裡的/usr/mysql
掛載到外部linux下的/home/mysql
。現在不僅mysql容器可以使用,其他的2個容器同樣可以使用,實現瞭數據共享。
所以,卷技術的關鍵詞:持久化、同步、數據共享。
二、使用數據卷
使用命令-v
。
docker run -it -v 主機目錄:容器目錄
現在我要啟動centos鏡像,並且把容器內的/home
目錄,掛載到主機的/home/test/
目錄下:
docker run -it -v /home/test:/home centos /bin/bash
可以看到啟動容器成功,為瞭方便,我多開一個窗口。
這時候用docker inspect
命令來查看容器,可以看到掛載情況。
docker inspect 370ff4e87083
找到Mounts
,可以看到具體綁定明細。
現在容器內的/home
目錄下是空的,對應的主機的/home/test/
下也是空的。
接著,我在容器內的/home下新建個文件new.txt
,然後查看主機下的/home
目錄,發現文件已經同步。
反向操作
上面是從容器內到容器外,現在反過來,從主機目錄下再增加一個文件second.txt
,然後再到容器內查看,也是同步的。
停止容器
如果容器停止瞭,我在外面把文件都刪掉瞭,當再次啟動容器後進去查看,也是同步的。
重啟容器,進入容器的/home下查看,也是空的。
相信現在應該可以體會到容器卷的作用瞭,比如有些容器裡涉及需要改配置的,那麼掛載到主機目錄下之後,就不需要進入容器修改瞭,直接在外面修改,容器內自動同步,更多關於Docker容器數據卷的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- Docker容器從鏡像恢復代碼的操作步驟
- docker 環境搭建、docker 與容器常用指令大全(推薦)
- docker 查看容器的掛載目錄操作
- 解決docker images 鏡像消失的問題
- Docker資源限制Cgroup的深入理解