Windows的Docker等价替代品用于“-v /var/run/docker.sock:/var/run/docker.sock”

7
我正在尝试从容器内部控制宿主机的docker服务。对于 Linux 宿主机和 Linux 容器,通常是这样完成的: docker run -it -v /var/run/docker.sock:/var/run/docker.sock alpine 现在我想在 Docker for Windows 宿主机和 Linux 容器上实现相同的功能。
我尝试了很多方法,主要是使用各种 IP 的 DOCKER_HOST,如 10.75.0.1:2375(docker VM 的 IP),172.17.0.1:2375(容器 IP)以及 0.0.0.0:2375192.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仅限于程序相关问题。请查看[帮助/主题]以了解可以在此处提问的主题。该帮助还提供了其他适合此问题的SE网站的建议。 - kaylum
5
@kaylum 确实,这就是为什么有一个 docker 标签的原因... - PeterE
现在在 Windows 上使用 Docker 也变得非常简单。请安装较新版本的 Docker。 - Rao
@Rao 是的,我知道。我正在使用最新版本。这是关于上述特定问题的。 - PeterE
3个回答

6

使用Docker for Windows运行Linux容器时,这个方法也是有效的(但在运行Windows容器时不行)。只要确保你的shell不会重写路径或类似的操作即可。


2
哦我的天啊,那当然是我从未尝试过的唯一变体,因为我们都知道Windows没有/var/run/docker.sock。回想起来很明显,因为docker主机在虚拟机中运行而不是在Windows本身中运行。感谢您指引我正确的方向。也许应该通过这一点扩展Windows版Docker的文档。 - PeterE
1
很抱歉,我仍然不知道答案。你是说在Linux或Windows上使用的命令完全相同吗?谢谢。 - Sean McCarthy
@GabrielBB,这对我有效。我使用了-v /var/run/docker.sock:/var/run/docker.sock --privileged。"--privileged" 对我来说是必要的。我的 Docker 主机在 Windows 上,我从 Linux 容器内部访问它。 - Sean McCarthy
@SeanMcCarthy 哇,即使使用 --privileged 也对我不起作用。我昨天打开了这个问题:https://github.com/docker/for-win/issues/4642 - GabrielBB
@GabrielBB,我为你创建了一个GitLab仓库,供你克隆和测试。它将连接一个Linux Docker容器(你可以在其中使用VS Code开发你的代码)到你的Windows Docker主机。希望能对你有所帮助!https://gitlab.com/mccarthysean/develop-inside-linux-docker-container-on-windows-10-host - Sean McCarthy
显示剩余2条评论

2

如果回复旧帖被视为不良行为,我对SO的运作方式并不了解,所以如果有冒犯之处请见谅。此外,我不在Windows上使用Docker,但在寻找设置Portainer时遇到了这个线程。我找到了自己想要找到的内容,在第一次登录Portainer时,它给我发出了这个警告:

 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).

所以,就是这样。希望有所帮助。


0
为了补充@friism的答案:
请确保您的shell不会重写路径或类似内容。
在Windows上的Git Bash中,我遇到了这个问题。 在这种情况下,解决方案是在所有绝对路径前加上额外的斜杠(/)以禁用Git Bash执行的自动路径重写。(来源

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接