AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1018655
Accepted
Dani
Dani
Asked: 2020-05-26 10:47:18 +0800 CST2020-05-26 10:47:18 +0800 CST 2020-05-26 10:47:18 +0800 CST

无法从容器内部 ping/访问 172.17.0.1 上的 docker 主机

  • 772

我的 docker 主机在 172.17.0.1 上监听。

我可以从主机卷曲它,但是当我从容器内卷曲相同的 ip/端口时,我会超时。

我可以从容器中 ping 任何东西,但我无法访问主机。

我错过了什么?

Container 是通过以下命令运行的 Jenkins 镜像:

docker run -d --name jenkins -v jenkins_home:/var/jenkins_home -p 8080:8080 -p 50000:50000 jenkins/jenkins:2.222.3

在主机上运行 curl:

curl http://172.17.0.1:2375 {“消息”:“找不到页面”}

使用 docker 运行 curl 将超时。

curl http://172.17.0.1:2375 curl: (7) 连接172.17.0.1端口2375失败:连接超时

docker
  • 2 2 个回答
  • 7261 Views

2 个回答

  • Voted
  1. Best Answer
    BMitch
    2020-05-27T10:11:36+08:002020-05-27T10:11:36+08:00

    这通常是因为主机上的 iptables 阻止了来自 docker 网络的访问。您可以查看iptables -S或iptables -nvL查看您当前的规则。


    也就是说,如果您确实打开了 docker API,则需要注意谁可以访问该 API。使用端口 2375 通常意味着您尚未配置 mTLS,请参阅 docker的设置 mTLS 指南。这意味着任何有权访问该端口的人都可以提交 API 调用,这意味着非特权本地用户或任何其他容器都可以在您的主机上获得 root 权限。在您的情况下,这很简单:

    docker -H tcp://172.17.0.1:2375 run -it --rm --privileged --pid host debian nsenter -t 1 -m -u -n -i bash
    

    推荐的解决方案是使用 DinD 在容器内运行 docker 引擎,或者将 docker 套接字共享为文件/卷挂载,并具有对文件的适当 UID/GID 访问权限。这确保只有容器可以访问 docker 引擎,而不是所有用户和主机上运行的任何容器。为了处理安装在卷中的文件的 UID/GID 访问问题,我专门针对我的 jenkins-docker 存储库中的 Jenkins 映像完成了此操作,并且在我的docker- base 存储库中的 fix-perms 脚本中有一个更通用的解决方案。

    • 3
  2. Dani
    2020-05-27T08:04:35+08:002020-05-27T08:04:35+08:00

    @BMitch-我已经弄清楚了-但是您也做对了(如果您将其发布为答案,我将接受并删除我的答案),iptables 阻止了访问。一旦我打开它 - 它按预期工作。

    • 1

相关问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve