Mac上的Docker:无法运行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工具箱时,docker守护进程将在VirtualBox虚拟机中运行。 守护进程(以及在该虚拟机内运行的容器)因此无法访问主机(Mac OS X)上的文件。
当你从你的主机绑定一个目录到容器(这样容器可以访问这些文件)时,文件总是从守护进程运行的主机上挂载; 在你的情况下,VirtualBox虚拟机。
Docker Toolbox使用“窍门”来允许你从主机上挂载文件; /Users/
目录中的文件使用VirtualBox“guest添加”与VirtualBox VM共享。 这意味着当你跑步时,
docker run -v /Users/myname/somedir:/var/www/html -d nginx
/Users/myname/somedir
守护程序将VM中的/Users/myname/somedir
目录挂载到容器中。 由于客人添加“技巧”,这个path实际上是与您的OS X机器共享,所以容器“看到”您的OS X机器的文件。
但是,在OS X机器和VM之间不共享/Users/
目录之外的任何目录。 如果你尝试绑定一个不存在于虚拟机内部的path,docker会创build一个空目录 (假设你想挂载一个目录,因为它无法判断它应该是目录还是文件),并在容器中安装该目录。
在你的例子中,你尝试绑定挂载;
/Applications/MAMP/htdocs/clients/codingmachine/myapp/mysql/custom-my.cnf
在容器里面;
/etc/mysql/mysql.cnf
/Applications
目录不与VM共享,因此docker会在虚拟机内部创build一个名为custom-my.cnf
的空目录 ,然后尝试将该目录挂载到容器内的custom-my.cnf
。 这会失败,因为你不能在一个文件上安装一个目录,而且Linux会产生一个“不是目录”的错误。
解决你的问题;
- 移动你正在尝试在你的
/Users/
目录中的某处安装的文件。 请注意,VirtualBox guest添加总是将文件/目录挂载,就好像它们属于用户1000和组1000一样; 因此,mysql可能没有对这些文件的写入权限 - 如果你有一个现代的Mac,运行OS X 10.10或更高版本,请检查Docker for Mac,它允许你与Docker共享任何目录,并且没有“权限”问题。 https://docs.docker.com/docker-for-mac/troubleshoot/#/volume-mounting-requires-file-sharing-for-any-project-directories-outside-of-users
- OS X上的mariadb docker容器:无法创build数据库目录
- Jenkins Docker容器无法访问docker.sock
- 音量坐骑不适用于数字海洋
- Maven的子模块无法在Docker构build的图像中find父pom / artifact
- Docker插件:java.io.FileNotFoundException:/ src / main / docker / Dockerfile gradle-docker失败
- 如何读取环境variables在ASP.NET核心2.0 + Docker中?
- 使用'docker-compose'命令运行Elasticsearch,Logstash和Kibana
- django无法在docker-compose中连接mysql
- Docker容器与2个应用程序进行交互