docker 容器共享网络
前言
我在自己的 linux 服务器装了两个 docker 服务 a 和 b。其中 a 服务是对外, b 服务是为了供 a 服务使用,所以我需要让两者的网络互通本地访问。下面是流程:
创建共享网络:
确保运行以下命令来创建名为 "share" 的 Docker 网络:
docker network create share
对于项目 A:
在项目 A 的 docker-compose.yml 文件中,添加以下内容以连接到名为 "share" 的网络:
version: '3'
services:
  service_a:
    image: your_image
    ports: 
      - "18000:8000" # 将容器 A 的端口映射到主机的端口 18000
    networks:
      - share
networks:
  share:
    external: true  #这个意思是不创建网络,而是链接已有的
对于项目 B:
同样,在项目 B 的 docker-compose.yml 文件中,也添加以下内容来连接到名为 "share" 的网络:
version: '3'
services:
  service_b:
    image: your_image
    ports:
      - "19000:9000"  # 将容器 B 的端口映射到主机的端口 19000
    networks:
      - share
networks:
  share:
    external: true   #这个意思是不创建网络,而是链接已有的
启动项目 A 和 B:
分别进入项目 A 和 B 的目录,并使用以下命令启动它们:
# 在项目 A 目录下启动
docker-compose up -d
# 在项目 B 目录下启动
docker-compose up -d
检查是否成功
使用下面的命令可以查看 share 网络下有哪些容器
docker network inspect share
如果要单独检测某个容器所在网络,可以使用
docker inspect container_a | grep Networks
docker inspect container_b | grep Networks
网络访问
我们如何让 a 容器直接访问 b 容器呢?不能直接使用所谓的 127.0.0.1 这种,而是要使用容器内部分配的 ip
# 查询容器IP地址
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_b
然后我们使用容器的 ip 和容器的端口号(非主机映射端口号)访问该容器服务
    ~ 个人签名: 无论发生什么都不要停下,无论到什么时候都要继续前行,要一直走下去,直到生命终止的那一刻!~
                    
                
                
            
        
浙公网安备 33010602011771号