【问题标题】:docker for windows equivalent for "-v /var/run/docker.sock:/var/run/docker.sock"docker for windows 等效于“-v /var/run/docker.sock:/var/run/docker.sock”
【发布时间】:2017-08-13 20:17:45
【问题描述】:

我正在尝试从容器内部控制主机 docker 服务。

使用 Linux 主机和 Linux 容器通常是这样完成的: docker run -it -v /var/run/docker.sock:/var/run/docker.sock alpine

我现在想通过 Docker for Windows 主机和 Linux 容器实现相同的目标。

如果尝试了很多东西,主要是使用 DOCKER_HOST 和不同的 IP,例如 10.75.0.1:2375(docker VM 的 IP)、172.17.0.1:2375(容器 IP)和 0.0.0.0:2375 以及 192.168.178.xxx:2375(主机 IP )。

但显然端口23752376 上没有任何响应,我检查了以下内容: docker run -ti --rm alpine /bin/sh -c "apk add -U nmap && nmap -Pn 10.72.0.1 -p 2375-2376"

在这一点上,我想知道这是否可以通过 Docker for Windows 实现。我发现的大多数信息都与docker-machine / VirtualBox 组合有关。

【问题讨论】:

  • 投票结束这个问题作为题外话。请注意,Stackoverflow 仅用于编程相关问题。请查看help center,了解可以在此处询问的主题。该帮助还为可能适合此问题的其他 SE 站点提供了建议。
  • @kaylum 当然,这就是为什么有一个docker 标签...
  • 现在在 Windows 上使用 docker 也很简单。请安装更高版本的docker。
  • @Rao 是的,我知道。我正在使用最新版本。这是关于如上所述的一个特定问题。

标签: linux windows docker


【解决方案1】:

这在使用 Docker for Windows 运行 Linux 容器时也可以正常工作(但在运行 Windows 容器时不行)。只需确保您的 shell 不会重写路径或类似内容。

【讨论】:

  • 天啊,这当然是我从未尝试过的唯一变体,因为我们都知道 Windows 没有/var/run/docker.sock。后面很明显,因为 docker 主机确实在 VM 中运行,而不是在 Windows 本身中。感谢您为我指明正确的方向。也许此时应该扩展 docker for windows 文档。
  • 恐怕我还是不知道答案是什么。您是说无论在 Linux 还是 Windows 上它都是完全相同的命令吗?谢谢
  • @SeanMcCarthy 他们就是这么说的。但这对我不起作用:/
  • @GabrielBB,它对我有用。我使用 -v /var/run/docker.sock:/var/run/docker.sock --privileged。 “--privileged”对我来说是必要的。我的 Docker 主机在 Windows 上,我正在从 Linux 容器内部访问它。
  • @SeanMcCarthy 哇,即使使用 --privileged 也不适合我。我昨天打开了这个问题:github.com/docker/for-win/issues/4642
【解决方案2】:

我不知道 SO 是如何工作的,所以如果不赞成发布 necroposting,那么抱歉。我也没有在 Windows 上使用 docker,但是在我搜索设置搬运工时出现了这个线程。我想出了我想弄清楚的事情,在第一次登录时,搬运工给了我这个警告:

 Ensure that you have started the Portainer container with the following Docker flag:
-v "/var/run/docker.sock:/var/run/docker.sock" (Linux).
or
-v \\.\pipe\docker_engine:\\.\pipe\docker_engine (Windows).

那么,就这样吧。希望对您有所帮助。

【讨论】:

    【解决方案3】:

    补充@friism 的答案:

    只要确保你的 shell 不会重写路径或类似的东西。

    这发生在我在 Windows 上的 Git Bash 中。在这种情况下,解决方案是在所有绝对路径前加上一个额外的斜杠 (/),以禁用 Git Bash 完成的自动路径重写。 (Source)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-27
      • 2015-05-31
      • 2020-01-03
      • 2019-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-14
      相关资源
      最近更新 更多