Mac-Osx
為什麼 docker-machine 會在重啟時清除數據?
我在 OSX 上使用 Docker Toolbox。
我創建了一個用於儲存持久數據的數據卷容器:https ://docs.docker.com/userguide/dockervolumes/#creating-and-mounting-a-data-volume-container 。
我檢查了這些數據確實儲存在 boot2docker 虛擬機(由 docker-machine 創建)而不是容器上,因此它會持續存在。但是“docker-machine restart”會清除 vm 上的這些自定義數據。
我找不到有關正在發生的事情的文件。我發現一篇論壇文章提到 /var/lib/docker 中的數據將被保留,但我找不到任何官方文件說明這一點,而且考慮到上面的持久儲存指南沒有使用此路徑甚至沒有提及,這似乎也很奇怪您的數據將被刪除。
這是預期的嗎?如果是這樣,是否有關於儲存持久數據的正確路徑的官方文件?
編輯:添加失敗的例子
$ docker-machine ssh alt docker@alt:~$ docker run -v /data:/var/lib/mysql --name mydata busybox sh -c "echo 'hello' > /var/lib/mysql/hello" docker@alt:~$ docker run --rm --volumes-from mydata busybox sh -c "cat /var/lib/mysql/hello" hello docker@alt:~$ exit $ docker-machine restart alt Starting VM... $ docker-machine ssh alt docker@alt:~$ docker run --rm --volumes-from mydata busybox sh -c "cat /var/lib/mysql/hello" cat: can't open '/var/lib/mysql/hello': No such file or directory
這絕對應該有效:
$ docker-machine ssh default docker@default:~$ docker run -v /data --name mydata busybox true docker@default:~$ docker run --volumes-from mydata busybox sh -c "echo hello >/data/hello" docker@default:~$ docker run --volumes-from mydata busybox cat /data/hello hello docker@default:~$ exit $ docker-machine restart default Starting VM... $ docker-machine ssh default docker@default:~$ docker run --volumes-from mydata busybox cat /data/hello hello
您能否詳細說明重現問題的步驟?
boot2docker 有一個只讀文件系統(將在重新啟動時被擦除),但以下情況除外:
- 容器及其數據(卷)——這就是你所讀到的
/var/lib/docker
- Docker 鏡像
- Docker 配置(例如
/var/lib/boot2docker/profile
,可以調整守護程序標誌的位置)