当 net="host" 时按名称地址 docker 容器
Address docker container by name when net="host"
我在使用 docker 的 --net="host"
时遇到了一些奇怪的问题
在自定义网络中部署容器时,我可以使用它的名称对其进行寻址。但是当指定 --net="host"
而不是 --net="customnetwork"
时,不会暴露任何端口,而且我无法以任何方式寻址容器。下面是主机网络检查
docker network inspect host
[
{
"Name": "host",
"Id": "663f54513dc2b631d6f81457a49374da3bc3193ac0617497c018c47520600e22",
"Scope": "local",
"Driver": "host",
"IPAM": {
"Driver": "default",
"Options": null,
"Config": []
},
"Containers": {
"836433bfa612f84fa3d73dec0f920e47affc529b64636f5e1bf38a8b7ced2d75": {
"Name": "elasticsearch",
"EndpointID": "79950c18d12d6c7a6715135287d48c7963bed21c7b09b28f6d443b7040eea697",
"MacAddress": "",
"IPv4Address": "",
"IPv6Address": ""
},
"86d4bd0c232a350371131c300c417877e0fb0c54b831f85093b0d2228d9b4f1a": {
"Name": "mongo",
"EndpointID": "492022820dd1e0a634e63c97962575b0bffe1c137163cce4df30aa8da39d1159",
"MacAddress": "",
"IPv4Address": "",
"IPv6Address": ""
},
"e4b9179849afa529a6249b067c27953d0b187afdd5fac76112bb9b1369ae9556": {
"Name": "graylog",
"EndpointID": "e705eede1ddf897c8c4fc45ae6fcf77db8228b1a0c2d318f6045846e52951b93",
"MacAddress": "",
"IPv4Address": "",
"IPv6Address": ""
}
},
"Options": {}
}
]
如您所见,没有分配 IP 地址,也没有任何更改。
我对 docker 比较陌生,也许我漏掉了什么。
关于背景的一些信息:
我正在使用 docker 来部署 graylog2。它通过主机名引用 mongodb 和 elasticserach,并且需要能够侦听主机上的端口以捕获传入的日志消息。端口已配置 post 部署。
Docker 版本:1.10.3,构建 20f81dd
感谢任何帮助。
感谢您的宝贵时间。
当您执行 --net=host
时,没有单独的网络,没有要转发的端口,因为它只是在您的主机上侦听(您不能转发给自己,尤其是因为您正在使用该端口),并且没有单独的IP,它是你主机的IP。
我在使用 docker 的 --net="host"
在自定义网络中部署容器时,我可以使用它的名称对其进行寻址。但是当指定 --net="host"
而不是 --net="customnetwork"
时,不会暴露任何端口,而且我无法以任何方式寻址容器。下面是主机网络检查
docker network inspect host
[
{
"Name": "host",
"Id": "663f54513dc2b631d6f81457a49374da3bc3193ac0617497c018c47520600e22",
"Scope": "local",
"Driver": "host",
"IPAM": {
"Driver": "default",
"Options": null,
"Config": []
},
"Containers": {
"836433bfa612f84fa3d73dec0f920e47affc529b64636f5e1bf38a8b7ced2d75": {
"Name": "elasticsearch",
"EndpointID": "79950c18d12d6c7a6715135287d48c7963bed21c7b09b28f6d443b7040eea697",
"MacAddress": "",
"IPv4Address": "",
"IPv6Address": ""
},
"86d4bd0c232a350371131c300c417877e0fb0c54b831f85093b0d2228d9b4f1a": {
"Name": "mongo",
"EndpointID": "492022820dd1e0a634e63c97962575b0bffe1c137163cce4df30aa8da39d1159",
"MacAddress": "",
"IPv4Address": "",
"IPv6Address": ""
},
"e4b9179849afa529a6249b067c27953d0b187afdd5fac76112bb9b1369ae9556": {
"Name": "graylog",
"EndpointID": "e705eede1ddf897c8c4fc45ae6fcf77db8228b1a0c2d318f6045846e52951b93",
"MacAddress": "",
"IPv4Address": "",
"IPv6Address": ""
}
},
"Options": {}
}
]
如您所见,没有分配 IP 地址,也没有任何更改。
我对 docker 比较陌生,也许我漏掉了什么。
关于背景的一些信息:
我正在使用 docker 来部署 graylog2。它通过主机名引用 mongodb 和 elasticserach,并且需要能够侦听主机上的端口以捕获传入的日志消息。端口已配置 post 部署。
Docker 版本:1.10.3,构建 20f81dd
感谢任何帮助。
感谢您的宝贵时间。
当您执行 --net=host
时,没有单独的网络,没有要转发的端口,因为它只是在您的主机上侦听(您不能转发给自己,尤其是因为您正在使用该端口),并且没有单独的IP,它是你主机的IP。