如何使用docker compose将已运行的容器链接到我的应用程序
我需要将名为proxy1和proxy2的两个容器链接到myapp proxy1和proxy2使用docker命令运行,myapp使用docker-compose.yml 我需要能够从容器myapppingproxy1和proxy2 我尝试在docker-compose.yml中使用如何使用docker compose将已运行的容器链接到我的应用程序,docker,docker-compose,containers,Docker,Docker Compose,Containers,我需要将名为proxy1和proxy2的两个容器链接到myapp proxy1和proxy2使用docker命令运行,myapp使用docker-compose.yml 我需要能够从容器myapppingproxy1和proxy2 我尝试在docker-compose.yml中使用外部链接,如下所示: services: myapp: build: . ports: - 3000:3000 external_links: - proxy1
外部链接
,如下所示:
services:
myapp:
build: .
ports:
- 3000:3000
external_links:
- proxy1
- proxy2
如果我做了一个docker ps
我有:
CONTAINER ID IMAGE COMMAND STATUS PORTS NAMES
2f0365826670 myapp "docker-entrypoint.s…" Up About an hour 0.0.0.0:3000->3000/tcp, 0.0.0.0:8001->8001/tcp myapp_myapp_1
bbd1f5340086 proxy "supervisord -n" Up 2 hours 127.0.0.1:5002->8080/tcp proxy2
6c3cd1eb6530 proxy "supervisord -n" Up 2 hours 127.0.0.1:5001->8080/tcp proxy1
如何从myapp访问这两个代理容器?我建议您执行以下操作: 创建网络:
docker network create mynetwork
将独立容器连接到网络:
docker network connect mynetwork my_container
更新docker compose:
services:
myapp:
build: .
ports:
- 3000:3000
networks:
default:
external:
name: mynetwork
另一种方法是检查独立contaoner网络正在使用什么:
docker inspect proxy1
并将该网络用作compose中的外部网络
或者您可以在撰写中使用
网络模式:“主机”
,这是不推荐的当我尝试执行docker network connect mynetwork proxy1
时,我收到以下错误:守护进程的错误响应:未能将接口veth984accd添加到沙盒:错误设置接口“veth984accd”IP到172.19.0.4/16:无法在沙盒接口中编程地址172.19.0.4/16,因为它与现有路由{Ifindex:2 Dst:128.0.0.0/1 Src:Gw:100.124.176.1标志:[]表:254}
如果您想在撰写中使用现有的proxy1网络,请使用docker inspect proxy1检查它
ok super,当我docker检查proxy1
时,我得到“网络”:{“网桥”:{…
所以我在我的docker-compose.yml中使用bridge
作为网络模式
,但是我如何从myappi ping我的proxy1使用网络模式:主机
,这是解决我问题的最佳方案