Docker:将容器数据保存到主机的正确方法

我正在使用OSX并通过Boot2docker虚拟机运行docker。

我一直在试图弄清楚如何将一个容器的数据(MySQL正式的docker镜像)保存到主机上,但是没有太大的成功。

我不断收到一个错误,指出MySQL服务试图写入的/ var / lib / mysql目录不可访问。

docker run -e MYSQL_ROOT_PASSWORD=12345 -v "$(pwd)/.docker-volumes/mysql:/var/lib/mysql" mysql:5.6

查看容器中装载的库的权限,这就是我所看到的:

 root@mysql:/# ls -la /var/lib/ total 44 drwxr-xr-x 16 root root 4096 Jan 27 18:35 . drwxr-xr-x 18 root root 4096 Jan 27 18:35 .. drwxr-xr-x 7 root root 4096 Jan 27 18:35 apt drwxr-xr-x 14 root root 4096 Jan 27 18:35 dpkg drwxr-xr-x 2 root root 4096 Jul 14 2013 initscripts drwxr-xr-x 2 root root 4096 Jul 14 2013 insserv drwxrwsr-x 2 libuuid libuuid 4096 Dec 11 2012 libuuid drwxr-xr-x 2 root root 4096 Dec 24 13:41 misc drwxr-xr-x 1 1000 staff 102 Feb 4 15:10 mysql drwxr-xr-x 2 root root 4096 Jan 27 16:48 pam drwxr-xr-x 2 root root 4096 Nov 23 2012 update-rc.d drwxr-xr-x 2 root root 4096 Jul 14 2013 urandom 

正如你所看到的, mysql目录属于1000,属于组“staff”。

我的假设是,运行MySQL的服务进程可能设置为另一个用户( mysql ),因此我得到这个错误。

我已经读过,这个特定的问题可以使用卷数据容器来解决,但是由于它们只是在最后一个容器实际使用它们的容器之前才持久化数据,所以对我来说这不是一个好的解决scheme。

我以错误的方式接近这个吗?

谢谢。

你最好使用data-volume容器,我使用本地的psqlcouchdb数据库。 数据实际上持续存在,除非您将该卷链接到容器,否则它是无法访问的。 要真正强制卷被删除,你必须指定docker rm -v ,如果没有其他容器被链接到它,这将删除数据卷。