2016-04-05 29 views
0

我似乎無法在任何地方找到答案。大量的教程指出,擁有一個只有數據的容器就是你在docker中實現持久性數據的方式。然而我不明白的是,只要數據只存在容器,數據似乎只是持久的。當它關閉並重新啓動時,數據就會消失。Docker'data only container'正在關閉

考慮到沒有系統會有100%的運行時間,並且我希望長期數據庫的內容能夠堅持超越物理系統重啓等。我如何正確保存數據?

回答

2

大量的教程指出擁有一個只有數據的容器是您在docker中實現持久性數據的方式。

請注意,最近的Docker版本不再是這種情況;卷現在是「頭等」公民,可以使用docker volume命令創建/刪除/等等。這意味着你可以通過運行創造一個持久的數據量:

$ docker volume create --name myvolume 

而且以後你可以連接到它是這樣的:

$ docker run -v myvolume:/data ... 

我不明白不過的是,該數據只有只有數據容器存在時才似乎是持久的。

如果您在問題中包含有關如何創建數據專用容器的信息,這將有所幫助。請注意,只有數據容器而不是必須「運行」纔有用;它只是存在而已。因此,例如,我可以創建這樣一個唯一的數據容器:

$ docker run -v /data --name datacontainer busybox true 

這將,當然,運行/bin/true然後立即退出:

$ docker ps -a 
47568a43d386  busybox      "true"     7 seconds ago  Exited (0) 6 seconds ago      datacontainer 

但是,即使容器已退出我可以使用該卷的新容器:

$ docker run -it --volumes-from datacontainer busybox sh 
Filesystem   1K-blocks  Used Available Use% Mounted on 
/dev/mapper/tank-docker--vol 
         83844100 2398688 81445412 3% /data 

這種機制,你會用什麼在碼頭工人獲得持久卷早於1.10,但不再是(1.9,也許?)由於docker volume命令的需要。

+0

只是爲了補充這一點對於任何正在掙扎的人來說,我都是。您的僅數據容器將創建一個具有生成名稱的卷(例如,4488845jgjg3)。當你下一個實例化容器時,它會用不同的名稱創建第二個卷。這兩個卷都存在於主機上,但除非通過id引用它們,否則不會自動訪問它們。 – Andy

+0

這就是爲什麼給數據容器一個名稱,並使用'--volumes-from'來訪問卷(以便您不必擔心單個卷的標識)。 – larsks