docker compose 容器间相互访问
侧边栏壁纸
  • 累计撰写 16 篇文章
  • 累计收到 11 条评论

docker compose 容器间相互访问

坑了个飞
2023-12-30 / 4 评论 / 178 阅读 / 正在检测是否收录...

使用 docker compose 命令来启动容器, 如果不在 docker-compose.yaml 文件里指定网络, 则会自动创建一个名为 容器名_default 的桥接网络, 这样就导致容器之间无法相互访问

要解决容器间相互访问的问题有如下两个解决方案:

  1. 把要访问的容器配置写在同一个 docker-compose.yaml 配置文件里
  2. docker-compose.yaml 配置文件里指定同一个网络

第一种解决方法:将要访问的容器配置写在同一个 docker-compose.yaml 配置文件里

例如,在一个配置文件里如下内容:

version: '3.9'

services:
  prometheus:
    image: prom/prometheus
    ports:
      - '9090:9090'
 grafana: 
   image: grafana/grafana 
   container_name: grafana 
   ports: 
     - 3000:3000

在这个配置文件里有两个容器 prometheusgrafana , 在这两个容器中都可以用容器名来访问另一个容器, 可以用 ping 命令来测试:

ping prometheus

第二种解决方法:在 docker-compose.yaml 配置文件里指定同一个网络

如果不想把两个容器的配置写在同一个配置里,就需要在配置里指定网络。

首先,创建一个自定义桥接网络,网络名为 mynet

docker network create --driver bridge mynet

然后,在配置文件里指定网络:

version: '3.9'

services:
  prometheus:
    image: prom/prometheus
    ports:
      - '9090:9090'
    networks:
      - mynet

networks:
 mynet:
  name: mynet
  external: true
version: '3.9'

services:
 grafana: 
   image: grafana/grafana 
   container_name: grafana 
   ports: 
     - 3000:3000
   networks:
     - mynet

networks:
 mynet:
  name: mynet
  external: true

这里在两个配置文件里都指定了同一个网络:mynet,也可以实现相互访问。

0

评论 (4)

取消
  1. 头像
    auohadiaik
    Windows 10 · Google Chrome
    @

    博主真是太厉害了!!!

    回复
  2. 头像
    mflzxidoof
    Windows 10 · Google Chrome
    @

    博主真是太厉害了!!!

    回复
  3. 头像
    ljrjugkihf
    Windows 10 · Google Chrome
    @

    想想你的文章写的特别好

    回复
  4. 头像
    lwkhdodhkg
    Windows 10 · Google Chrome
    @

    不错不错,我喜欢看 https://www.jiwenlaw.com/

    回复