Docker容器使用宿主机上的mongod/redis等服务详解

2025-11-07 0 885

我们在本地的开发中为了保证大家都开发环境一直,PHP 的扩展,版本保持一致, 我们使用了 docker .但是由于redis/mongodb 在宿主机上, 所以通过 127.0.0.1 是连接不上的

前提说明

这个是在 docker 运行容器时使用的桥接模式(默认) 时才会发生以上问题.如果使用 host 模式就没有.

所以,我们就是要把是 docker 的网络模式设置为 host 模式.

具体实现

~ docker run –network host php56

补充说明

使用了 host 模式后,则表示宿主机与容器共享宿主机的 IP,端口. 如果不希望与宿主机共享,则不能使用这种方式

如果你的电脑是 Mac, 并且你的docker 版本大于18.03,则你可以在代码中使用 docker.for.mac.localhost 来连接宿主机上的服务.

//使用示例

//以连接 mongod 为例

$mongodb = new MongoDBDriverManager(mongodb://docker.for.mac.localhost/:27017);

Windows 跟 Linux 暂时还没有发现可以在桥接模式下可以通过特使字符来使用宿主机上服务的方法。

如果各位有好的方法,欢迎留言讨论。

补充知识:Docker无法连接宿主机数据库

redis

已经修改过为宿主机 ifconfig命令下 docker0的 172.17.0.1 连接地址,还是无法连接redis

docker中redis配置信息

# redis配置信息 REDIS_HOST = 172.17.0.1 REDIS_PORT = 6379 LEVEL_NAME = logging.DEBUG # session配置 SESSION_TYPE = redis # 设置redis存储的类型 SESSION_REDIS = StrictRedis(host=REDIS_HOST, port=REDIS_PORT) # 指定session存储的redis服务器 SESSION_USE_SIGNER = True # 设置签名存储

不利用守护方式启动容器,可以看到redis、mysql连接数据库报错

Docker容器使用宿主机上的mongod/redis等服务详解

解决办法

修改redis.conf文件第69行,把 bind 127.0.0.1 改为 0.0.0.0

Docker容器使用宿主机上的mongod/redis等服务详解

redis恢复连接

mysql

class ProductConfig(Config): # 数据库配置信息 SQLALCHEMY_DATABASE_URI = mysql+pymysql://root:root@172.17.0.1:3306/information SQLALCHEMY_TRACK_MODIFICATIONS = False SQLALCHEMY_COMMIT_ON_TEARDOWN = True # 每当改变数据内容之后,在视图函数结束的时候会自动提交 DEBUG = False LEVEL_NAME = logging.ERROR

以权限用户root登录

选择mysql库

查看mysql库中的user表的host值(即可进行连接访问的主机/IP名称)

改host值(以通配符%的内容增加主机/IP地址),当然也可以直接增加IP地址

刷新MySQL的系统权限相关表

MariaDB [(none)]> use mysql; MariaDB [mysql]> SELECT user, host FROM mysql.user MariaDB [mysql]> update user set host = % where user =root and host=localhost; MariaDB [(mysql)]> flush privileges;

测试一下

问题解决

Docker容器使用宿主机上的mongod/redis等服务详解

这两种开放所有地址访问都会有安全隐患

以上这篇Docker容器使用宿主机上的mongod/redis等服务详解就是小编分享给大家的全部内容了。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

遇见资源网 后端开发 Docker容器使用宿主机上的mongod/redis等服务详解 https://www.ox520.com/4485.html

常见问题

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务