我正在使用Docker容器设置本地开发环境。docker-compose.yml如下所示
version: '2' services: db: image: mongo:3 mq: image: rabbitmq:3 api: build: . image: my_app/api ports: - "3000:3000" links: - db - mq environment: - NODE_ENV=development
它开始没有错误。码头工人列出了3个正在运行的容器
docker-compose up -d docker ps e90e5a8b5d33 my_app/api "/usr/local/bin/node " 0.0.0.0:3000->3000/tcp my_app_api_1 42bfcd971b16 mongo:3 "/entrypoint.sh mongo" 27017/tcp my_app_db_1 a0685a816c47 rabbitmq:3 "/docker-entrypoint.s" 4369/tcp, 5671-5672/tcp, 25672/tcp my_app_mq_1
但是,当我尝试从另一个容器链接到那些正在运行的容器时
docker run --link my_app_mq_1:mq --link my_app_db_1:db -it worker
我得到错误
docker: Error response from daemon: Cannot link to /my_app_mq_1, as it does not belong to the default network.
我也尝试过
docker run --link my_app_mq_1:mq --link my_app_db_1:db -it --net default worker
同样的错误。
那么如何链接到由docker-compose启动的运行容器?
好的,找到答案了。万一其他人遇到同样的问题,那就去做吧
docker network ls
此命令列出所有docker网络。当您运行docker-compose时,docker- compose将创建一个新的网络。在我的情况下,网络被命名为myapp_default。
注意:为应用程序的网络提供基于“项目名称”的名称,该名称基于其所在目录的名称。您可以使用–project- name标志或COMPOSE_PROJECT_NAME环境变量来覆盖项目名称。 。撰写网络
因此,链接到这些容器的正确方法是
docker run --link my_app_mq_1:mq --link my_app_db_1:db -it --net myapp_default worker