启动userland代理时出错:listen tcp0.0.0.0:3306:bind:已在使用的地址

moo*_*ght 13 php apache docker laravel-5 docker-compose

错误:为dockervel_mysql_1 无法重新启动容器 c258b418c03cbd6ec02c349c12cf09403f0eaf42fa9248019af7860d037d6474:驱动程序无法在端点dockervel_mysql_1编程外部连接(da3dd576458aa1fe3af7b539c48b9d61d97432cf5e9ee02d78562851f53981ae):电子RROR启动用户级代理:听tcp0.0.0.0:3306:绑定:地址已经在使用.

我必须制作LAravel应用程序并提供Dockerfile,但我真的坚持这个.在此之前,我在我的机器上安装了laravel噩梦.

我正在尝试获得dockervel图像,我正在按照这里的步骤进行操作:http: //www.spiralout.eu/2015/12/dockervel-laravel-development.html

但是当我运行dartisan make:auth时,它会给出上面的错误.

我试图更改docker-compose.yml中的默认端口

端口:

- "8084:80"
Run Code Online (Sandbox Code Playgroud)

仍然没有,也试图在我的机器上停止apache2 (服务apache2停止),也尝试了docker -compose restart并删除docker container dockervel_mysql_1.我必须提到我已经完成了一个Laravel项目.在/ var/www/laravel中.

请帮忙!

小智 27

我遇到了同样的问题

sudo netstat -nlpt |grep 3306
Run Code Online (Sandbox Code Playgroud)

向我展示了PID和它由(mysgld)启动的服务.每当我试图杀死PID时,它就会再次启动.但是,当我停止服务时问题得到解决

sudo service mysql stop
Run Code Online (Sandbox Code Playgroud)

请注意,您必须使用mysql而不是mysqld.

我希望这会为你做到 - 我能够docker-compose up毫无问题地运行

  • 运行此错误:“netstat:t:未知或未检测的协议” (3认同)

小智 21

尝试使用端口杀死所有进程3306

sudo kill `sudo lsof -t -i:3306`
Run Code Online (Sandbox Code Playgroud)

然后,运行您的 docker 容器:

sudo docker-compose up
Run Code Online (Sandbox Code Playgroud)


Spi*_*Out 13

可能你已经在端口3306中运行了MySQL服务.你应该先关闭它.
然后尝试结束docker-compose down并重新启动它docker-compose up.
还要记住在项目中添加文件后更改权限(如dartisan make:auth)dpermit

更新: 因为您已将端口更改为"8084",您应该转到localhost:8084
如果您看到apache default,那么您可能正在浏览另一台服务器,因为dockervel是基于构建的nginx.
你也可能在Docker上有一些差距.不要将本地存储与docker存储混合在一起./var/www在容器中不同于您的本地/var/www.在docker-compose.yml中,您将本地安装~/dockervel/www到容器中/var/www.
我建议您重新开始,并将您对Apache服务器所做的更改还原.关闭它,你不需要它.Dockervel将在容器中为您提供NginX服务器.


小智 13

我对这个问题的解决方法是进入

docker-compose.yml

并更改 ports: -3306:3306ports: -3307:3306 然后再次运行此命令:

docker-compose up
Run Code Online (Sandbox Code Playgroud)


小智 12

在 Ubuntu 上,运行此命令将阻止您的 mysql 为您的 docker 容器运行:

sudo service mysql stop  
Run Code Online (Sandbox Code Playgroud)

然后,如果您的 apache2 正在运行,您需要停止该服务,尤其是当您想使用 nginx 时:

sudo service apache2 stop
Run Code Online (Sandbox Code Playgroud)

然后,您可以运行您的docker-compose up -d ...命令


Avi*_*aut 6

第一个解决方案:

  sudo service mysql stop
Run Code Online (Sandbox Code Playgroud)

然后运行

 docker-compose up 
Run Code Online (Sandbox Code Playgroud)

要启动应用程序,运行此 mysql stop 命令来停止端口 3306 端口上的当前 MySQL 服务是一种快速且快速的解决方案,以便同一端口可用于您的 docker 应用程序。

场景 1:当您想要运行之前运行的应用程序和您现在想要运行的下一个应用程序时,就会出现问题,此时它将无法工作。

场景 1 的第二种解决方案:

如果您的下一个/当前应用程序来自 docker,那么请尝试下面的操作,它将在不干扰 3306 端口的第一个应用程序 mysql 服务的情况下工作

从 docker-compose.yml 文件打开并更改 MySQL 端口

默认配置

ports:
      - ${SERVER_PORT_DB:-3306}:3306
Run Code Online (Sandbox Code Playgroud)

改变端口

 ports:
      - ${SERVER_PORT_DB:-3307}:3306
Run Code Online (Sandbox Code Playgroud)

现在运行以下命令来启动应用程序

docker-composer up 
Run Code Online (Sandbox Code Playgroud)


Haz*_*mat 5

所以对我来说,当我尝试在 docker 容器中加载和运行 MySQL 映像时,我遇到了相同的错误: 在此输入图像描述

即使在系统首选项中停止本地 mysql 服务器也没有帮助: 在此输入图像描述 因为端口 3306 被我的 tomcat 服务器使用,所以基本上你必须确保docker 命令想要使用的端口(在本例中为 3306)不应该被任何其他服务使用,否则命令将失败