目錄
- 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容器數據卷的資料請關注其它相關文章!