Docker服务无法被访问

这篇具有很好参考价值的文章主要介绍了Docker服务无法被访问。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近在准备做项目时,在Docker部署服务时出现了问题。使用Docker部署的服务,宿主机无法进行访问。
这方面的原因有很多,需要进行逐一排查。

测试

安装nginx

docker pull nginx
docker images

运行nginx

docker run -p 8080:80 --name=nginx_tmp -d nginx

宿主机进行通过浏览器访问localhost:8080,如果访问成功说明docker网络环境没问题,很大概率是容器和镜像的配置问题。

基础问题

确保宿主机网络可以正常使用、是否进行端口映射等等。这类通常都是简单的问题,通常是忘记设置等原因,但我当前的原因却不是。

进阶问题

这方面的原因主要涉及到Docker网络问题。Docker共有四种网络模式:host、bride(桥接模式,默认模式)、container、none。其中host、bridge是我们常用的模式。当docker run --net=host ...(这个命令让容器与宿主机共享网络命名空间,这样容器就可以直接使用宿主机的IP地址进行访问),指定网络模式后才会进行更改,默认则采用桥接模式,ip地址通常为:172.17.0.2、172.17.0.3、172.17.0.4等等。可以通过docker inspect 容器名称查看对应的ip地址。
docker容器具体的网络配置见6 张图详解 Docker 容器网络配置
我的首先检查网络模式为桥接模式服务器上docker无法访问,docker,容器
通过宿主机IP地址+端口进行访问,无效。使用ip地址172.17.0.1+端口访问,无效。改用host网络模式重新部署,通过宿主机IP地址+端口进行访问,成功。
下面是一些解决方案,我是通过重启docker进行解决的(估计出现了bug)。

重启docker

systemctl restart docker

众所周知:重启解决99.99的问题。

关闭防火墙

如果你使用虚拟机作为docker的宿主机,可能因为防火墙的问题,导致虚拟机上的docker无法被访问到。那么直接关闭防火墙进行访问试试。

systemctl stop ufw

更改为host网络模式访问

  1. 查看IP地址
docker inspect 容器名 | grep "IPAddress"
  1. 更改网络模式为host模式
docker network disconnect bridge 容器名
docker network connect host 容器名 
  1. 重新启动容器
docker start 容器名

或者重新创建并运行一个容器,添加–net=host选项文章来源地址https://www.toymoban.com/news/detail-764893.html

docker start -p 8090:80 --net=host ...

到了这里,关于Docker服务无法被访问的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker服务器、以及容器设置自动启动

    查看已启动的服务 查看是否设置开机启动 设置开机启动 关闭开机启动 启动时加--restart=always 如果已经过运行的项目

    2024年02月12日
    浏览(73)
  • netdata监控服务器主机(包括Docker容器)

    创建挂载目录 docker运行 通过ip:19999端口访问web界面 此时默认是英文界面,netdata暂不支持中文语言 下载汉化文件,我这直接git拉取 修改dashboard.js文件 快速搜索定位/NETDATA.jQuery ,将jquery版本修改成jquery-3.6.0.min.js 进入netdata容器 切换到web目录下 将dashboard_info.js、、index.html、

    2024年02月11日
    浏览(67)
  • 解决docker容器之间网络互通 启动web服务只能本地localhost访问无法从外部访问

    docker容器之间相互访问 1.查看当前的网络 Copy [root@host ~]# docker network ls NETWORK ID          NAME                DRIVER              SCOPE 3dd4643bb158        bridge              bridge              local 748b765aca52        host                host                local 4d59a0cd3ff

    2024年02月10日
    浏览(50)
  • 阿里云服务器docker安装网心云容器魔方

    为了更好的浏览体验,欢迎光顾勤奋的凯尔森同学个人博客http://www.huerpu.cc:7000 一、docker环境搭建 首先要有docker环境,如果没有请参考这篇博客 二、安装网心云 出现如下响应,证明已经启动成功。 三、阿里云增加网络安全组规则 在阿里云的安全组规则里,增加入方向和出方

    2024年02月11日
    浏览(51)
  • 【超详细简单】云服务器中的docker容器挂载云硬盘

    本教程一共分为三步,三步即成! 1. 确认需要挂载到的目录(本文需要挂到docker运行目录) 首先找到云服务器中的docker环境所在的位置(这里的位置指的是docker镜像和容器所在的位置),我这里用的是CentOs,对应的位置是 /var/lib/docker ,如图所示有 containers 和 image 目录出现

    2023年04月24日
    浏览(95)
  • 在docker中安装Elasticsearch容器,并且阿里云服务器配置

    1、拉取Elasticsearch镜像 2、启动Elasticsearch容器  访问:IP访问地址:9200    

    2024年02月13日
    浏览(53)
  • VsCode容器开发 - VsCode连接远程服务器上的docker

    之前在服务器上的Docker内开发,文件编辑起来就很不爽。不如 使用VsCode直接打开远程服务器上的Docker ,这样就能在VsCode里直接无缝编辑Docker里的文件了。 但是百度和必应得到的中文结果都很奇葩,都是什么“给docker添加端口映射”、“给服务器开放被映射的端口”、“远程

    2024年01月23日
    浏览(56)
  • docker容器打包成镜像,在新的服务器上部署环境

    2719a6b5b8e1是容器id(用docker ps 命令查看) , my_paddle2.2.2:v1 是自己打包的镜像的名字命名格式,有冒号的 docker commit -a “shi” -m “to150” 2799a6b6b8e1 my_paddle2.2.2:v1 -o 和 是一个意思都是打包镜像的符号 sparkdemo:v1 ,就是有冒号,整体镜像名字规则 docker images查看镜像,后用命令保存

    2023年04月08日
    浏览(57)
  • Docker (CentOS)配置rabbitMQ 服务器访问15672端口显示服务器拒绝连接

    在自己的服务器上配置rabbitMq时已经启动成功了,但是访问就是出错。 使用以下命令启动。  启动后可以看到已经启动成功。 输入地址去访问看到被拒绝访问了  那么有三种可能性:1、你的防火墙端口没有开放 使用命令开放端口  2、你的服务器安全组没有添加该端口,去你

    2024年02月14日
    浏览(46)
  • 尝试添加服务器中正在运行的docker容器时报错:当前用户没有运行“docker”的权限

    环境 1,通过vscode ssh到服务器的 2,服务器端有一个contianer,但是无法通过vscode的Dev contianer组件将服务器中正在运行的contianer添加过来 3,值得注意的一点是,我没有把当前用户添加到docker用户组中,这也是报错的原因 报错内容 解决办法 当前用户添加到docker用户组中 然后一

    2024年01月19日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包