docker无法访问宿主机_docker访问宿主机端口

docker无法访问宿主机_docker访问宿主机端口背景已通过docker启动mongodb,监听端口为27017.直接启动应用(不通过docker)可以正常访问到mongodb,但是通过docker访问却不行,访问的url为:mongodb://127.0.0.1:27017或mongodb://localhost:270172019-04-1806:05:52.694[cluster-ClusterId{value=’5cb813…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

背景

已通过docker启动mongodb,监听端口为27017. 直接启动应用(不通过docker)可以正常访问到mongodb,但是通过docker访问却不行,访问的url为: mongodb://127.0.0.1:27017或mongodb://localhost:27017

2019-04-18 06:05:52.694 [cluster-ClusterId{value='5cb813be26261e30fc3db87f', description='null'}-127.0.0.1:27017] DEBUG org.mongodb.driver.cluster - Updating cluster description to  {type=UNKNOWN, servers=[{address=127.0.0.1:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, caused by {java.net.ConnectException: Connection refused}}]

原因分析

docker是一个虚拟环境,127.0.0.1和localhost指的是虚拟环境内部,而不是外部宿主机,所以无法这样访问.

解决方案

  1. 对于mac和windows,可以使用host.docker.internal替换127.0.0.1,如 mongodb://host.docker.internal:27017
  2. 对于Linux可以采用如下方案(后续应该也可以用上面的方案,但是当前docker还没有修改此问题):
  • 创建一个桥接网络
    下面的localNet是网络名字,可自行修改;关于192.168.0.0这个子网,也可以自行定义.
    默认按照下面的命令,执行后将可以通过192.168.0.1访问宿主机.
    docker network create -d bridge --subnet 192.168.0.0/24 --gateway 192.168.0.1 localNet
  • 使用192.168.0.1替换127.0.0.1,如mongodb://192.168.0.1:27017

附录

参考资料:
From inside of a Docker container, how do I connect to the localhost of the machine?
Docker Tip #35: Connect to a Database Running on Your Docker Host

关于我

厦门大学计算机专业 | 前华为工程师
分享编程技术,没啥深度,但看得懂,适合初学者。
Java | 安卓 | 前端 | 小程序 | 鸿蒙
公众号:花生皮编程
docker无法访问宿主机_docker访问宿主机端口

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/171569.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Docker技术( 容器虚拟化技术 )「建议收藏」

    Docker虚拟化容器技术第一章Docker简介诞生背景Docker介绍虚拟机技术容器虚拟化技术官方网址第二章Docker安装前提条件安装DockerDocker底层原理Docker结构图工作原理Docker为什么比VM快第三章Docker常用命令帮助命令镜像命令容器命令第一章Docker简介诞生背景一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发…

    2022年4月10日
    44
  • Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

    Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?今天打开centos7,由于没设置开机自启,当我启动docker时,发现与docker有关的命令都会报错,百度过,说什么重装docker啥的,我都试过,但是还是解决不了问题,下面我贴出问题集:1.例如我查看版本信息2.重启容器3.systemctlstatusdocker查看docker状态也发现错误:最后解决问题方法是:进入/etc/docker,没有daemon.json文件就自己新建一个:cd/etc/docker编辑daemon.json文件:加入这段代码:

    2022年5月29日
    26
  • docker dockerfile详解_进入docker容器命令

    docker dockerfile详解_进入docker容器命令前言Dockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。Dockerfile简介Dockerfile是用来构建Docker镜像的构建文件,是由一系列

    2022年7月30日
    7
  • docker安装awvs_docker版本

    docker安装awvs_docker版本前提:安装了docker(docker安装教程)在docker中安装dwvs#1pull拉取下载镜像dockerpullsecfa/docker-awvs#2将Docker的3443端口映射到物理机的13443端口dockerrun-it-d-p13443:3443secfa/docker-awvs##如果有报错重启docker后再重复上一步dockerservicedockerrestart或systemctlrestartdocker

    2022年9月22日
    2
  • Docker(三) 通过gitlab部署CICD「建议收藏」

    Docker(三) 通过gitlab部署CICD「建议收藏」文章目录Docker(三)docker通过gitlab部署CICD一、部署gitlab1.1拉取gitlab镜像1.2运行gitlab镜像1.3配置1.4若发生502报错二、CI2.1Runner搭建2.2注册Runner2.3样例测试2.3.1新建maven-tomcat项目2.3.2创建.gitlab-ci.yml2.3.3编写Dockerfile文件2.3.4编写docker-compose.yml文件三、CD3.1安装Jenkins3.2配置目标服务器及Gitla

    2022年5月2日
    129
  • Docker核心技术学习笔记

    Docker核心技术文章目录Docker核心技术一 、Docker简介二、Docker安装前提说明Docker 的基本组成安装centos 7 安装docker启动hello-world底层原理三、Docker常用命令帮助命令镜像命令容器命令总结四、Docker 镜像**1、镜像是什么?****2、镜像特点****3、Docker镜像commit操作补充**4 、镜像生成的途径5、 镜像导入导出…

    2022年2月28日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号