最近,我的Docker容器拒绝连接。它以前工作得很好,这个问题是新的,目前还没有解释。
停止和重新启动容器没有效果。
停止和重新启动Mac上的Docker for Desktop也没有效果。
我只能通过重新启动我的OSX笔记本电脑来解决它(macOS Mojave v 10.14.5)。 然后它会工作一段时间,然后又开始阻止连接尝试。
我可以进入容器,例如:
docker exec -it db /bin/bash
我可以在容器内轻松访问mysql。
我已尝试启用mysql的常规日志以尝试调试它:它没有显示任何活动……
我的笔记本电脑有足够的可用磁盘空间(剩余188GB)。
所有这些都在过去的6个月里很好地工作,但在最近一周左右的短暂工作后突然开始阻止连接……
感谢您提供任何线索或想法。
这是我的Docker文件:
FROM mysql:5.7
RUN DEBIAN_FRONTEND=noninteractive apt-get update
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y apt-utils
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y procps
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y debianutils
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y iputils-ping
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y net-tools
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y vim
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y less
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y man
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y sudo
WORKDIR .
COPY ./my.cnf /etc/mysql/my.cnf
#CMD ["mysqld", "--general_log=1", "--log-raw", "--log-error"]
CMD ["mysqld"]
我的docker-compose文件:
(MYSQL_DATA_FOLDER是一个环境变量,设置为有效路径
version: '3.5'
services:
database:
image: database
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: ""
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
volumes:
- mydatavolume:${MYSQL_DATA_FOLDER}
build:
context: .
volumes:
mydatavolume:
networks:
default:
name: dev_network
driver: bridge
如何启动它:
docker-compose build;
docker-compose run --service-ports --volume=$MYSQL_DATA_FOLDER:/var/lib/mysql --name db --rm database
我通常是通过在 OSX 终端中使用 MySQL 客户端进行连接的。
mysql -h localhost -P 3306 --protocol=tcp -u root
我也尝试了使用127.0.0.1和docker inspect显示的IP地址的变化。
我的my.cnf文件
[mysqld]
sql_mode = ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
尝试添加:
bind-address=0.0.0.0
针对上述问题的解决方案无法帮助
用户表
mysql> SELECT host, user FROM mysql.user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| % | root |
| % | some_user |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+---------------+
5 rows in set (0.01 sec)
新的信息:
我已经移除了数据卷并且让它创建一个新的。现在问题已经解决了,所以看来这是一个 MySQL 问题而不是 Docker 问题。如果这种问题再次出现,我仍然想知道如何调试 MySQL 问题。
mysql -h 127.0.0.1 -u root -p
- seddikomardocker-compose run --service-ports db
- seddikomar