docker访问宿主机数据库
host.docker.internal
域名不生效的问题
容器无法通过 来访问宿主机的数据库
下面是我的laravel 数据库配置文件
DB_CONNECTION=mysql
DB_HOST=host.docker.internal
DB_PORT=3306
DB_DATABASE=sign
DB_USERNAME=root
DB_PASSWORD=root
docker 版本号
Client: Docker Engine - Community
Version: 20.10.18
API version: 1.41
Go version: go1.18.6
Git commit: b40c2f6
Built: Thu Sep 8 23:12:08 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.18
API version: 1.41 (minimum version 1.12)
Go version: go1.18.6
Git commit: e42327a
Built: Thu Sep 8 23:09:59 2022
OS/Arch: linux/amd64
Experimental: true
containerd:
Version: 1.6.8
GitCommit: 9cd3357b7fd7218e4aec3eae239db1f68a5a6ec6
runc:
Version: 1.1.4
GitCommit: v1.1.4-0-g5fd4c4d
docker-init:
Version: 0.19.0
GitCommit: de40ad0
docker 网络环境
NETWORK ID NAME DRIVER SCOPE
65f4ef08be97 bridge bridge local
069421d52823 host host local
3aeb2a0179ee none null local
d2199f6e2dc2 php_default bridge local
我看到docker 说 在17.12 以上版本就可以使用host.docker.internal
直接访问宿主机。但是我的并未生效,无法访问数据库直接 2002 错误,用宿主机ip 是可以访问的。
请问:
- 这是什么原因呢?是哪里没有配置好,是漏掉了什么吗?
- 我就是想用主机名来替代ip,请问还有什么的好办法?比如给容器添加个host,哪又怎么来动态生成呢?(可以使用docker-compose)
host.docker.internal 是一个开发功能,只在 Docker Desktop 有效。你用的是 Docker Desktop 吗?(Linux 下一般都不是)
https://docs.docker.com/deskt...