1

我正在使用 OSX 并在 Boot2docker VM 上运行 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),因此我收到此错误。

我已经读过可以使用卷数据容器来解决这个特定问题,但是由于它们只保留数据直到最后一个容器实际使用它们的卷,这对我来说不是一个好的解决方案。

我是否以错误的方式处理这个问题?

谢谢。

4

1 回答 1

1

使用data-volume容器肯定会更好,我对本地psqlcouchdb数据库做同样的事情。数据实际上仍然存在,除非您将卷链接到容器,否则无法访问它。要实际强制删除卷,您必须指定docker rm -v,如果没有其他容器链接到它,它将删除数据卷。

于 2015-02-04T15:43:23.633 回答