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其它相關文章!

推薦閱讀: