我是第一次使用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发布于 2016-12-29 08:12:15
运行docker工具箱时,docker守护程序在VirtualBox VM中运行。
将目录从主机绑定挂载到容器中时(以便容器可以访问这些文件),始终从运行守护程序的主机挂载文件;在您的示例中,挂载的是VirtualBox VM。
Docker Toolbox使用一个“技巧”来允许您从主机挂载文件;/Users/目录中的文件使用VirtualBox "guest additions“与VirtualBox VM共享。这意味着当你运行的时候;
docker run -v /Users/myname/somedir:/var/www/html -d nginxdocker守护进程将/Users/myname/somedir目录从VM挂载到容器中。由于来宾添加的“技巧”,该路径实际上是与您的OS X计算机共享的,因此容器可以“看到”来自您的OS X计算机的文件。
如果您尝试绑定挂载VM中不存在的路径,docker会创建一个空目录(它假定您想挂载一个目录,因为它无法判断它应该是一个目录还是一个文件),并将该目录挂载到容器中。
在您的示例中,您尝试绑定mount;
/Applications/MAMP/htdocs/clients/codingmachine/myapp/mysql/custom-my.cnf在容器中;
/etc/mysql/mysql.cnf/Applications目录不与VM共享,因此docker在VM内创建一个名为custom-my.cnf的空目录,然后尝试将该目录挂载到容器内的/etc/mysql/mysql.cnf。这会失败,因为您不能将目录挂载到文件的顶部,并且Linux会生成错误"not a directory“。
来解决你的问题;
/Users/目录下的某个位置。https://stackoverflow.com/questions/41351241
复制相似问题