有这样一个需求:我的 Mysql 安装在宿主机上,我并不想让他跑在 Docker 上,因为 Docker 需要耗费大量内存。
但是,与此同时,我又有管理 Mysql 数据库的需求,那么这个时候,我要如何让运行在 Docker 内的 PMA 能够访问我宿主机的 Mysql 呢?
参考了这篇文章: 【docker知识】从容器中如何访问到宿主机_docker容器访问宿主机_无水先生的博客-CSDN博客
启动容器的命令:
docker run -d -p 8888:80 --add-host host.docker.internal:host-gateway -e PMA_HOST=host.docker.internal:3306 -e PMA_USER=root -e PMA_PASSWORD=root phpmyadmin:latest
重点在于
--add-host host.docker.internal:host-gateway
-e PMA_HOST=host.docker.internal:3306
这两个参数。
--add-host
意味着修改容器内的 hosts 文件,让 host.docker.internal
这个域名指向 docker 网关,通过 docker 网关即可访问宿主机。
-e PMA_HOST=host.docker.internal:3306
指定了让 PMA 访问来自 host.docker.internal
这个域名的数据库,因此可以顺利访问到宿主机。