Docker学习笔记:docker compose 中难缠的网络问题

作者 : 开心源码 本文共1449个字,预计阅读时间需要4分钟 发布时间: 2022-05-12 共150人阅读

越来越多的开发者被带到Docker的使用中,至少我的所有开发环境都是Docker的,Github直达。本人习惯用 Docker compose 来管理,在各种各样的容器之间,网络问题时不时的就蹦出来,现我就过程中遇到的问题做出自己的总结。

同一个 docker-compose 文件中的容器如何互联?

在整理开发环境时,我习惯性的把php和nginx放在一起,方便启动时能够同时启动。所以会把 nginx 和 php 放在同一个 docker-compose 中。那么如何保证 nginx 能转发到 php 呢?

links
version: "3"services:  nginx:    image: nginx:1.15    links:      - "php7cache"  php7cache:    build: .

这样nginx和php就能简单的通信了。当然,我们的php不会是独立的,一般还会用到mysql,但是又不是必要的,所以我又单独启动了一个mysql容器。独立的mysql容器,独立的docker-compose文件。那么这时候又要怎么连接呢?

不同 docker-compose 文件中的容器如何互联?

external_links

external_links是连接外部网络的方式,这种方案来源于网上,如下:

  ...  # other  ...  php7cache:    build: .    networks:      - default      - app_net    external_links:      - redis      - mysqlnetworks:  app_net:  # 定义了一个 app_net 的网络    external: true # 并标识为外部网络
networks

在使用external_links这个过程中我意识的,这生效的极有可能不是external_links,而是在networks服务生效了,于是做了尝试,发现真的可以,我的了解是 app_net 其实是重新定义了一个网络,而后在容器的net_works参数上指定加入了 app_net 中。

version: "3"services:    flume:        image: probablyfine/flume        networks:            - default            - kafka_defaultnetworks:    kafka_default:        external: true

细心的同学可能已经发现了,在上面的代码中我并没有再使用app_net,而是直接使用了kafka_default。为什么?其实,当使用 “docker network ls” 命令时,我们会发现在当指定 app_net 时,列表中会包含 app_net 网络,同时,也会有各种容器的 default 网络,如:kafka_default。为了偷懒,我就直接使用了 kafka_default。

extra_hosts

最近,又有一个需求,我的docker需要使用与宿主机同一网络的其它服务。尝试很多方法,改hosts、创立新网络,发现都无法处理。后来才发现还有extra_hosts参数,尝试了一下,发现真的可行。

version: "3"services:    flume_events:        image: probablyfine/flume        container_name: flume_events        environment:            FLUME_AGENT_NAME: agent        extra_hosts:            - "test-1:10.3.8.49"

指定extra_hosts后,在宿主机上修改host。而后在flume的配置文件中指定kafka的链接为 test-1:9092

转发请注明出处,来自三岁于辛的博客!原文链接

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Docker学习笔记:docker compose 中难缠的网络问题

发表回复