对我来说,一个常见的工作流程是在开发过程中在Web项目中运行docker-compose up
,然后运行docker inspect repo_app_1 | grep IPAddress
,然后转到浏览器中的ipaddress。
我想获取该容器的名称及其IP,而不是获取容器的IP。
最好的方法是什么?当然,我可以想到一种方法–劫持docker
和docker-compose
命令,以便在每次执行后,我们运行一个脚本,该脚本通过awk运行docker container
的输出并将其追加托管文件,还可以删除较旧的条目。
答案 0 :(得分:0)
一种可能性是使用Traefik,这是一种支持Docker的反向代理,包括其自己的监视仪表板。
例如,请参见Traefik on Docker for Web Developers - With bonus Let's Encrypt SSL!中的“ Juan Treminio”,以便自动注册您的容器并通过预定义的URL访问它们。
胡安介绍了如何解决“口舞”:
如果端口80映射到Web服务器A,则必须选择另一个端口来绑定Web服务器B和Web服务器C。
这很快就会变老,因为您必须记住http://localhost转到A,http://localhost:81转到B,http://localhost:82转到C。
他指出:
在虚拟机上,实际上不会发生此问题,因为您可以为服务器分配静态IP地址,并将其绑定到系统的主机文件(
/etc/hosts
)。
容器本质上是临时的,通常不会在主机网络上创建,而是在专用网络中使用其在特定范围内的随机IP地址创建。但是,您必须为启动的每个VM编辑/etc/hosts
,并且列表会随着您处理的项目数的增加而增加。Træfik解决了这两个问题,首先是消除了在URL中使用端口的需要,其次是完全不需要编辑
/etc/hosts
。
新容器将通过以下方式向Traefik码头工人网络(docker network create --driver bridge traefik_webgateway
)注册:
docker run -d --name some-mailhog \
--network traefik_webgateway \
--label traefik.docker.network=traefik_webgateway \
--label traefik.frontend.rule=Host:mailhog.localhost \
--label traefik.port=8025 \
mailhog/mailhog
URL变得简单http://mailhog.localhost。