Mac-Osx

為什麼 docker-machine 會在重啟時清除數據?

  • July 29, 2016

我在 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 有一個只讀文件系統(將在重新啟動時被擦除),但以下情況除外:

  1. 容器及其數據(卷)——這就是你所讀到的/var/lib/docker
  2. Docker 鏡像
  3. Docker 配置(例如/var/lib/boot2docker/profile,可以調整守護程序標誌的位置)

引用自:https://serverfault.com/questions/722085