Dir*_*nne 2 mysql shell mariadb web docker
我是 Docker 的新手,似乎无法运行 mariadb 容器。我刚刚在运行 High Sierra 的 Macbook Pro 上新安装了 Docker。
我简单地使用了这个命令:
docker run --name db -e MYSQL_ROOT_PASSWORD=test -d -p 3306:3306
mariadb
Run Code Online (Sandbox Code Playgroud)
它应该创建一个图像并从中运行容器。但我收到以下错误:
docker: Error response from daemon: driver failed programming
external connectivity on endpoint db
(d4d6631ae53d644b5c28a803d5814a792c7af6925ebcf84b61b49b4a0fe30f4b):
Error starting userland proxy: Bind for 0.0.0.0:3306 failed: port is
already allocated.
Run Code Online (Sandbox Code Playgroud)
到目前为止,我可能在很久以前就使用过 MySQL,但我很确定我没有在端口 3306 上运行任何东西。
我也试过不添加 -p 标签,它会在我使用它时运行,但是当我执行时docker ps它会显示3306/tcp而不是0.0.0.0:3306->3306/tcp作为端口。
我也试过只需要端口标签 as-p 3306但这将显示0.0.0.0:32769->3306/tcp为docker ps.
我很想得到一些帮助。提前致谢。
使用lsof命令检查服务/进程是否正在使用端口3306。
$ lsof -i tcp:3306
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 721 krisnik 34u IPv4 0x348c24a60c9d72a9 0t0 TCP localhost:mysql (LISTEN)
Run Code Online (Sandbox Code Playgroud)
现在终止/停止服务。
kill -9 <PID>
Run Code Online (Sandbox Code Playgroud)
重新运行您的 Docker 容器。随着所需的端口被释放,它应该可以正常工作。
编辑 - 1
如果lsof没有赶上进程,netstat也可以使用。
sudo netstat -lpn |grep :3306
kill -9 PID //PID processID used by 3306 Port
Run Code Online (Sandbox Code Playgroud)
Ref -端口 3306 繁忙但没有进程使用它
| 归档时间: |
|
| 查看次数: |
7308 次 |
| 最近记录: |