两个docker之间的服务相互访问
背景
- 测试阶段, 两个模型分别封装了两个docker环境, 都是封装成了接口形式, 比如dockerA 和dockerB环境.
Docker环境联通
- 创建自定义的bridge网络
docker network create testnet(自定义名称)
- 查询到新创建的bridge testnet
docker network ls
- 运行容器连接到testnet网络
docker run -it --name <容器名> —network --network-alias <网络别名> <镜像名>
示例
- dockerA
docker network create testnet
docker run --name ppcls -v $PWD:/mnt -p 18152:18152 -p 19530:19530 --network testnet --network-alias ppcls --shm-size=24g -it ppclas_cpu:latest /bin/bash
- dockerB
docker run --name yolov8 -v $PWD:/mnt --network testnet --network-alias yolov8 --shm-size=24g -it yolov8:v2 /bin/bash
说明: 这里可以指定端口也可以不指定, 都无所谓, 后面不会再宿主机直接访问
需求
- dockerA访问dockerB中的服务, 在dockerB中启动相对应的服务
gunicorn -w 1 -b 0.0.0.0:5000 app:app
说明: 这里的5000端口就是即将要访问的端口号
- 在dockerA中的请求文件中, 只需要确认访问的URL即可
URL="http://yolov8:5000"
说明: 在dockerA中访问dockerB的服务的时候, 只需要在URL中指定为dockerB容器的名字(即yolov8)即可, 端口他会自动查找.