当我启动 MySQL 时:
docker run --rm -d -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -v /Docker/data/matos/mysql:/var/lib/mysql mysql:5.7
然后启动 PHPMyAdmin :
docker run --rm -d -e PMA_HOST=172.17.0.1 phpmyadmin/phpmyadmin:latest
PMA 无法连接到数据库服务器。 当我尝试使用 PMA_HOST=172.17.0.2(这是分配给 MySQL 容器的地址)时,它可以工作。 但是:
我错了吗?
(我知道我可以使用 docker-compose 来处理这个问题,但更喜欢一个一个地管理我的容器)。
(我的 MySQL 容器可以通过 telnet 172.17.0.1 3306 从我的笔记本电脑成功 telnetable)。
(我的 Docker 版本:Docker 版本 20.10.3,构建 48d30b5)。
感谢您的帮助。
答案 0 :(得分:1)
创建一个新的 docker 网络并使用该网络启动两个容器
docker network create my-network
docker run --rm -d --network my-network -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -v /Docker/data/matos/mysql:/var/lib/mysql --name mysql mysql:5.7
docker run --rm -d --network my-network -e PMA_HOST=mysql phpmyadmin/phpmyadmin:latest
注意在命令中我给mysql容器取了一个名字'mysql'并用它作为phpmyadmin的地址
答案 1 :(得分:1)
刚刚发现问题。
我的 ufw 在我的笔记本电脑上处于活动状态,并且没有明确允许端口 3306。
我设法使用 172.17.0.1 在 PMA 容器和 MySQL 之间进行通信,方法是禁用 ufw 或添加规则以显式接受端口 3306。
感谢@kidustiliksew 的快速回复,以及您给我测试用户定义网络的机会。
答案 2 :(得分:0)
也许使用 docker-compose 是个好主意。 创建一个docker-compose.yml文件,在里面声明两个服务,一个是web,一个是db,然后就可以通过服务名(web, db)来引用了
ex: PMA_HOST=db