通过名称自动将Docker容器添加到主机

时间:2019-05-04 16:27:53

标签: docker docker-compose

对我来说,一个常见的工作流程是在开发过程中在Web项目中运行docker-compose up,然后运行docker inspect repo_app_1 | grep IPAddress,然后转到浏览器中的ipaddress。

我想获取该容器的名称及其IP,而不是获取容器的IP。

最好的方法是什么?当然,我可以想到一种方法–劫持dockerdocker-compose命令,以便在每次执行后,我们运行一个脚本,该脚本通过awk运行docker container的输出并将其追加托管文件,还可以删除较旧的条目。

1 个答案:

答案 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