我需要使用名称而不是IP或本地主机,是否有可能获得类似于return(
Object.keys(prods).map((key, i) => (
<div key={prods[key]._id}>
<h3>{prods[key].name}</h3>
</div>
))
)
的信息?
更新 我的用例是,我在localhost:8243和9443上运行WSO2 API管理器。我正在运行docker映像,并且在该容器(8443)中,它需要访问API Manager中部署的API。
当我使用docker.for.mac
并在docker组件(必须定义API Url)中使用“ localhost”时,出现错误
--net=host
答案 0 :(得分:1)
据我所知,没有直接的等效项。
如果您尝试访问主机上的另一个端口(:PORT
),则可以使用--net=host
运行第二个容器,并从容器内部访问localhost:PORT
上的第一项服务
如果这不起作用,我最近阅读的另一种解决方案是在启动主机时将主机的DNS | IP传递到您的容器中,然后使用该变量进行引用以从容器内访问主机:
docker run ... --env=HOST=[[YOUR-HOST-ADDRESS]] ...
答案 1 :(得分:1)
我需要使用名称而不是IP或本地主机
如果该部分是您真正要寻找的部分,则可以通过将一个条目添加到/etc/hosts
文件中,然后在其中添加一个localhost
的条目(这是“ 127.0.01的别名)
127.0.0.1 localhost
127.0.0.1 yourfancydomain.com
127.0.0.1 asmanyalias-asyou.wish
然后转到浏览器并直接转到该地址,并使用您应该已经在Docker容器中共享的端口
进一步解释docker端口的问题:
启动容器时,可以将主机中的端口绑定到需要从外部访问的dockerized服务的任何端口:
docker run --name nginx -p 8080:80 nginx
这将允许您使用8080
端口访问容器内运行的服务的80
端口。
所以...在将本地主机别名附加到您的自定义本地域之后,您可以通过以下操作访问您的nginx服务(在上面的示例中):
your-custom-domain:8080
如果您绑定到docker服务的端口恰好是80
(-p 80:80
),那么您甚至可以只使用自定义域(根本没有端口)
your-custom-domain
答案 2 :(得分:1)
对于该用例,当您希望容器化服务能够访问主机中(外部)运行的另一服务时,但使用自定义主机名而不是“ localhost”的ip(带或不带--net) =主机):
您可以通过以下两种可能的方式之一(为您方便),向带有--add-host
参数的容器添加额外主机来实现此目的:
--net=host
)docker run -it --net=host --add-host=wso2-api:$YOUR-HOST-IP consumer/service
docker run -it --add-host=wso2-api:$DOCKER_HOST_IP consumer/service
在两种情况下,您的容器化服务都将使用该自定义地址(在我的示例中为 wso2-api ),并且(因为主机名将包含在容器的/etc/hosts
文件中)自定义主机名将正确解析为您所需的实际IP地址。但是满足了对匹配主机名的要求(在这种情况下,因为您需要匹配证书中的名称)。
如何确定DOCKER_HOST_IP
?
手动:您可以只列出所有当前分配的IP地址,以找到与 docker0 网络相对应的IP地址:
ip -4 addr
或者通过直接过滤所需的内容更好:
ip -4 addr show docker0
您将获得类似以下的输出:
3:docker0:mtu 1500 qdisc noqueue
inet 172.17.0.1/16 brd 172.17.255.255作用域全局docker0
永远有效_lft永远永久_pft
并复制inet
自动:我使用此单个脚本直接获取我当前的docker主机IP(在与其他docker节点进行测试时特别有用):
DOCKER_HOST_IP="$(ip -4 addr show docker0 | awk '$1=="inet" {print $2}' | cut -d/ -f1 )"
现在,您只需启动一个简单的高山容器即可执行非常快速的概念验证:
docker run -it --add-host=wso2-api:$DOCKER_HOST_IP alpine
,然后在sh
提示符下出现,只需尝试通过以下方式访问您正在运行的api服务:
nc -zv wso2-api 8243
享受! :)