2017-02-12 55 views

回答

3

可以有多種選擇來實現這一點,但2點最常用的方法有:

  • 主機上創建一個目錄來安裝數據
  • 創建一個泊塢窗 捲上加載數據

1)您的主機系統,例如,創建一個合適的捲上的數據目錄/my/own/datadir。啓動蒙戈容器是這樣的:

$ docker run --name some-mongo -v /my/own/datadir:/data/db -d mongo:tag 

命令的-v /my/own/datadir:/data/db部分安裝從底層主機系統/my/own/datadir目錄/data/db的容器內,在MongoDB的默認情況下將其寫入數據文件。

注意,在主機系統上的用戶在SELinux啓用可能會看到這個問題。目前的解決方法是將相關的SELinux策略類型分配到新的數據目錄,以便容器將被允許訪問:

$ chcon -Rt svirt_sandbox_file_t /my/own/datadir 

源本是official documentation of the image

2)的另一種可能性是使用搬運工體積。

$ docker volume create my-volume 

這將在文件夾/var/lib/docker/volumes/my-volume中創建泊塢窗卷。現在你可以開始你的容器:

docker run --name some-mongo -v my-volume:/data/db -d mongo:tag 

所有數據將被存儲在my-volume所以在文件夾/var/lib/docker/my-volume。所以,即使你刪除你的容器,並創建該卷的數據將被加載到新的容器鏈接的新蒙戈容器。

時,也可以執行你的初始docker run命令使用--restart=always選項。這意味着您的容器會在重新啓動虛擬機後自動重啓。當你保存了你的數據時,你的數據庫在重啓之前或之後都沒有區別。