MySQL Docker 容器未使用 /var/run 锁。相反,尝试通过显式指定其 IP 地址来直接寻址容器。
首先获取容器的 IP 地址。像这样的东西:
export MYSQL_IP_ADDRESS=$(sudo docker inspect --format="{{ .NetworkSettings.IPAddress }}" mysql_db)
其中 'mysql_db' 是您为 MySQL Docker 容器指定的名称。
您应该能够“回显”您的 IP 地址:
corba@bilbovm01:~$ echo $MYSQL_IP_ADDRESS
172.17.121.2
然后在命令行上指定该主机名:
mysql -h $MYSQL_IP_ADDRESS -u root -p
为了回答您关于端口可见性的其他问题,我假设您使用的是来自 hub.docker.com 的标准 mysql/mysql-server 映像。该图像自动公开 3306,但您必须使用 MYSQL_ROOT_HOST 启动它,以便它允许您从主机 IP 连接到它。例如,我的主机 IP 地址是 172.17.121.1。所以我会像这样启动我的容器:
corba@bilbovm01:~$ sudo docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=blat -e MYSQL_ROOT_HOST=172.17.121.1 mysql/mysql-server:latest
aa09bc5a30b8f84b68d760d828f8e451238405a177caef4ad802bef44ad43352
corba@bilbovm01:~$ mysql -h $MYSQL_IP_ADDRESS -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.17 MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>