将Docker for Mac配置为监听一个TCP端口

9
4个回答

16

有一篇相关的答案建议使用socat来解决。

事实上,这确实可以将端口2375暴露到网络上:

socat TCP-LISTEN:2375,reuseaddr,fork UNIX-CONNECT:/var/run/docker.sock

参考资料: 在 Mac 上访问 Docker 守护进程远程 API


3
如果你正在使用最新的docker for mac beta版本,请参考问题25064
~/Library/Containers/com.docker.docker/Data/database/com.docker.driver.amd64-linux 是一个git数据库。
注意:如果~/Library/Containers/com.docker.docker/Data/database/中没有com.docker.driver.amd64-linux,请转到该database/文件夹,并执行git reset --hard。
守护程序配置位于etc/docker/daemon.json下,它只是使用Linux配置文件中的配置。
您需要更改配置,然后进行git提交:此时docker应该会自动重启(如果没有,请重新启动),并使用新的配置。
正如Michael Nelson评论中提到的那样,并且在《Docker for Windows》中详细阐述了(其中包括适用于“Docker for Mac”的部分)

基于Alpine的VM使用OpenRC作为其init系统

Docker的init脚本依赖于/usr/bin/mobyconfig脚本。
这个mobyconfig脚本需要内核引导时带有一个com.docker.database标签,指定配置文件的位置,否则它会停止执行。

mobyconfig脚本可以检索Docker守护进程的networkinsecure-registry配置,或从/etc/docker/daemon.json中读取配置文件。


4
哇哦,这真是一个令人印象深刻的复杂过程。这些文件不会直接在Git魔法之后被读取。它们还需要另一种魔法——“mobyconfig”实用程序来从“/Database/branch/master/ro/com.docker.driver.amd64-linux”中读取配置,这些文件神奇地出现在虚拟机中,然后该实用程序在启动期间重新创建真实的配置文件 :0。 - Matt
2
这一切都是正确的,但如果我在daemon.json的hosts字段中放入任何值,那么Docker将拒绝启动。我尝试了许多组合,如["unix:///var/run/docker.socket", "127.0.0.1", "fd://"],但都无济于事。 - Michael Nelson

0

这可能是因为您没有运行的机器。

eval $(docker-machine env default)

如果输出显示没有默认机器,则执行以下操作:
docker-machine create default --driver virtualbox

这将创建一个默认的机器,连接将成功。


-2

$ docker info

HTTP代理: docker.for.mac.http.internal:3128

HTTPS代理: docker.for.mac.http.internal:3129

注册表: https://index.docker.io/v1/

希望这可以帮助到您


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