[英]Unable to connect to MySQL in Docker from local host (Docker for Mac beta)
[英]Docker on Mac: Unable to run MySQL
我是第一次使用Docker。 在运行命令: make kickoff
我得到错误:
myapp_php_apache_engine_dev is up-to-date
Starting myapp_mysql_dev
ERROR: for mysql Cannot start service mysql: invalid header field value "oci runtime error: container_linux.go:247: starting container process caused \"process_linux.go:359: container init caused \\\"rootfs_linux.go:53: mounting \\\\\\\"/Applications/MAMP/htdocs/clients/codingmachine/myapp/mysql/custom-my.cnf\\\\\\\" to rootfs \\\\\\\"/mnt/sda1/var/lib/docker/aufs/mnt/2ab6b2578ad9f8da2d453aefa5cd9b288fee30dd2d73efc3048627cf0861d55a\\\\\\\" at \\\\\\\"/mnt/sda1/var/lib/docker/aufs/mnt/2ab6b2578ad9f8da2d453aefa5cd9b288fee30dd2d73efc3048627cf0861d55a/etc/mysql/mysql.cnf\\\\\\\" caused \\\\\\\"not a directory\\\\\\\"\\\"\"\n"
ERROR: Encountered errors while bringing up the project.
make: *** [up] Error 1
运行docker toolbox时,docker守护程序在VirtualBox VM中运行。 因此,守护程序(以及在该VM中运行的容器)无权访问主机上的文件(Mac OS X)。
当您将主机中的目录绑定安装到容器中(以便容器可以访问这些文件)时,文件总是从运行守护程序的主机上装入; 您的情况是VirtualBox VM。
Docker Toolbox使用“技巧”来允许您从主机装载文件; /Users/
目录中的文件通过VirtualBox“来宾添加”与VirtualBox VM共享。 这意味着当您运行时;
docker run -v /Users/myname/somedir:/var/www/html -d nginx
泊坞窗守护程序将VM中的/Users/myname/somedir
目录挂载到容器中。 由于来宾添加了“技巧”,该路径实际上与OS X计算机共享,因此容器“看到”了OS X计算机中的文件。
但是, /Users/
目录之外的任何目录都不在OS X机器和VM之间共享。 如果您尝试绑定安装虚拟机中不存在的路径,则docker将创建一个空目录 (假定您要安装目录,因为它无法确定它应该是目录还是文件),并将该目录装入容器中。
在您的示例中,您尝试绑定mount;
/Applications/MAMP/htdocs/clients/codingmachine/myapp/mysql/custom-my.cnf
在容器内部;
/etc/mysql/mysql.cnf
在/Applications
目录中没有与VM共享,因此搬运工创建一个名为空目录 custom-my.cnf
的虚拟机内,然后尝试安装该目录在/etc/mysql/mysql.cnf
容器内。 这将失败,因为您无法在文件顶部安装目录,并且Linux会产生错误“非目录”。
解决您的问题;
/Users/
目录中的某个位置。 请注意,VirtualBox来宾添加项始终会挂载文件/目录,就好像它们是用户1000和组1000所拥有的一样。 mysql因此可能没有对那些文件的写权限
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.