如何使用docker compose将已运行的容器链接到我的应用程序

如何使用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

我需要将名为proxy1proxy2的两个容器链接到myapp

proxy1proxy2使用docker命令运行,myapp使用docker-compose.yml

我需要能够从容器myapppingproxy1proxy2

我尝试在docker-compose.yml中使用
外部链接
,如下所示:

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使用
网络模式:主机
,这是解决我问题的最佳方案