【发布时间】:2018-06-14 07:43:13
【问题描述】:
您好,我的 macOS Sierr High 上有以下 dockerfile(例如):
FROM richarvey/nginx-php-fpm:1.3.7
EXPOSE 80
我可以在 192.168.8.101:8082 上构建和运行它
docker build -t myproject
docker run -d -p 192.168.8.101:8082:80 --name myproject myproject
它可以在http://192.168.8.101:8082 我的本地计算机和连接到同一个 wifi 网络的设备 (iPhone) 上运行(我在 localhost 上运行容器也没有问题)。
但是,当我尝试在其他 IP(例如 192.168.8.102:8082)上运行此容器时,我收到以下错误:
Mac-mini-Kamil:myproject Kamil$ docker run -d -p 192.168.8.102:8082:80 --name myproject myproject
f939d38243f420f812c859f5fe275faf49dc6e123d807583ec240fbdf0619a17
docker: Error response from daemon: driver failed programming external connectivity on endpoint myproject (0b546e63887e3ddeb4d2b21a8d6d15a94e33f1ff67c2765174a808bf6b13e120): Error starting userland proxy: listen tcp 192.168.8.102:8082: bind: cannot assign requested address.
我也尝试了其他地址,例如 172.17.1.2,但没有成功,我不知道为什么。有人可以给我建议(和/或关于我应该为这个问题提供哪些更多信息来解决它的说明)吗?我想知道:为什么我不能使用其他IP以及我可以做什么来使用其他IP?
更新 - 附加信息:
执行ifconfig后,我选择了两个有趣的结果:
en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether a8:8e:24:a3:d3:91
inet6 fe80::18fe:1146:6389:b630%en1 prefixlen 64 secured scopeid 0xa
inet 192.168.8.101 netmask 0xffffff00 broadcast 192.168.8.255
nd6 options=201<PERFORMNUD,DAD>
media: autoselect
status: active
bridge0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=63<RXCSUM,TXCSUM,TSO4,TSO6>
ether 32:00:11:fc:70:40
Configuration:
id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
ipfilter disabled flags 0x2
member: en2 flags=3<LEARNING,DISCOVER>
ifmaxaddr 0 port 9 priority 0 path cost 0
nd6 options=201<PERFORMNUD,DAD>
media: <unknown type>
status: inactive
【问题讨论】:
-
用 ipconfig 或 ifconfig 检查你的 ipv4 是什么?来自守护进程的错误响应:驱动程序在端点上编程外部连接失败:= 如果它不是您的 IP,则无法连接
-
我相信这是因为您必须先将 ip:
192.168.8.102添加到主机的接口,然后将run容器添加到容器中,正如这里建议的那样:Giving a docker container a routable ip address -
@tgogos - 不,我没有添加 ip - 但可能我的机器中有一些“奇怪”的设置 - 我该如何检查?
-
@Ivthillo 我更新了我的答案。
-
看看docs.docker.com/engine/userguide/networking/#default-networks。通常 docker 保护从其他 docker 容器访问。
标签: macos docker ip-address static-ip-address local-network