无法从主机连接到Docker容器中的mysql
我在Mac笔记本电脑上运行Docker mysql容器。以前,我可以通过mysql客户端从主机操作系统连接到它。然而,不知怎的,它被删除了,现在在我重新创建它之后,我无法再连接到它。我已经搜索了几十个类似的问题,但我完全被难住了 下面是我如何创建它的:无法从主机连接到Docker容器中的mysql,mysql,docker,Mysql,Docker,我在Mac笔记本电脑上运行Docker mysql容器。以前,我可以通过mysql客户端从主机操作系统连接到它。然而,不知怎的,它被删除了,现在在我重新创建它之后,我无法再连接到它。我已经搜索了几十个类似的问题,但我完全被难住了 下面是我如何创建它的: docker container run --name mysql-zhxw-dev -p 3306:3306 --expose=3306 -v zhxw-local-db-:/var/lib/mysql -e MYSQL_ALLOW_EMPTY
docker container run --name mysql-zhxw-dev -p 3306:3306 --expose=3306 -v zhxw-local-db-:/var/lib/mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -d mysql:5.7.30
每次从我的主机操作系统运行mysql-u root-h 127.0.0.1时,我都会得到:
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (61)
我可以登录到容器,并从中连接到mysql:
docker container exec -it mysql-zhxw-dev bash
mysql -u root <-- connects fine
docker container exec-it mysql zhxw dev bash
mysql-u root我在docker中有一个用mysql编写的模板,也许它可以帮助你
docker-compose.yml
version: "3.2"
services:
mysql:
image: mysql:latest
ports:
- "3306:3306"
volumes:
- /path-persistent-volumen:/var/lib/mysql/
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
- MYSQL_ROOT_PASSWORD=password
我有一个用mysql编写的docker模板,也许它可以帮助你
docker-compose.yml
version: "3.2"
services:
mysql:
image: mysql:latest
ports:
- "3306:3306"
volumes:
- /path-persistent-volumen:/var/lib/mysql/
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
- MYSQL_ROOT_PASSWORD=password
原来docker一定是处于一种奇怪的状态。重新启动我的笔记本电脑解决了这个问题
在重新启动之前,我尝试重新启动Docker桌面,但没有解决问题。只有完全重新启动才能解决此问题
我注意到的一件事是在重新启动之前,当我运行docker container ls-a
时,除了我试图使用的一个mysql容器外,没有任何容器。我想我可能从一些清理命令中删掉了它们。重启后,我所有的容器都回来了
我最近确实使用自制软件升级了docker,所以可能这让它处于一种奇怪的状态。结果表明docker一定处于一种奇怪的状态。重新启动我的笔记本电脑解决了这个问题
在重新启动之前,我尝试重新启动Docker桌面,但没有解决问题。只有完全重新启动才能解决此问题
我注意到的一件事是在重新启动之前,当我运行docker container ls-a
时,除了我试图使用的一个mysql容器外,没有任何容器。我想我可能从一些清理命令中删掉了它们。重启后,我所有的容器都回来了
我最近确实使用自制软件升级了docker,因此可能会使它处于一种奇怪的状态。此错误通常是由于主机上的端口相关问题引起的
试试这些东西:
检查容器的日志
使用-a
标志以连接模式启动容器
运行docker inspect mysql zhxw dev
并检查HostPort和HostIp,尝试发现异常情况
您还可以将端口映射中的主机端口更改为其他类型,如-v 3308:3306
此外,这可能会有所帮助
另外,我已经复制并运行了您发出的相同命令,并且运行正常。此错误通常是由于主机上的端口相关问题引起的
试试这些东西:
检查容器的日志
使用-a
标志以连接模式启动容器
运行docker inspect mysql zhxw dev
并检查HostPort和HostIp,尝试发现异常情况
您还可以将端口映射中的主机端口更改为其他类型,如-v 3308:3306
此外,这可能会有所帮助
另外,我已经复制并运行了您发出的相同命令,并且运行正常。您是否尝试过在Docker容器的IP地址上连接?使用docker inspect | grep inet
查找IP地址。我尝试了docker container inspect mysql zhxw dev | grep inet
,但没有包含“inet”的行。因此我搜索了“ip”,在NetworkSettings
对象中有几个IPAddress
条目。(都是同一个IP。)我试过那样连接(mysql-u root-h 172.17.0.2
),但它根本没有响应-只是超时了。你试过在Docker容器的IP地址上连接吗?使用docker inspect | grep inet
查找IP地址。我尝试了docker container inspect mysql zhxw dev | grep inet
,但没有包含“inet”的行。因此我搜索了“ip”,在NetworkSettings
对象中有几个IPAddress
条目。(都是同一个IP。)我试着用那种方式连接(mysql-u root-h 172.17.0.2
),但它根本没有响应-只是超时了。我试图用docker来完成这项工作,而不是docker compose,因为这只是为了本地开发,我已经有了一个docker-compose.yml文件用于这个项目的完整环境。我正试图用docker来做这件事,而不是用docker-compose,因为这只是为了本地开发,我已经有了一个docker-compose.yml文件用于这个项目的完整环境。谢谢-实际上我已经解决了。我的码头工人处于某种崩溃状态。重新启动修复了它。(我发布了一个以“原来docker一定处于一种奇怪的状态……”开头的答案)谢谢——事实上我已经猜到了。我的码头工人处于某种崩溃状态。重新启动修复了它。(我发布了一个以“原来docker一定处于一种奇怪的状态……”开头的答案)