从Docker容器运行Docker

问题描述 投票:0回答:1

为我的论文做一个项目,涉及一个有角度的前端,该前端与一个节点API后端进行通信,该节点需要使用docker从图像创建容器,为控制台输出运行了几行代码。

我已经使用docker-compose为前端和后端创建两个docker容器。

我的后端(api)容器需要一种使用dockerode连接到docker的方法,但我不确定如何执行此操作。

version: "3"
services:
  app:
    build: ./frontend
    ports:
      - "3001:4200"
    volumes:
      - ./frontend:/code
    depends_on:
      - api
  api:
    build: ./backend
    ports:
      - "3000:8080"
    volumes:
      - ./backend:/code

我已经尝试过:

1在主机(Windows 10)上使用docker-machine,但是每当我尝试通过dockerode从docker容器(后端)进行连接时'ReferenceError:docker not defined',但不确定docker-machine是否在其上正确运行我的主机,就像我在Windows 10上使用hyper-v。

const docker = new Docker({host: 'http://192.168.0.23', port: 3000});

2将docker安装到每次都失败的docker容器中,并且成功安装后,它不会将'docker'识别为在系统上运行。

3将docker映像添加到docker-compose文件中,因为我认为那行得通?对我来说,不,但不知道这是否是由于网络连接而不是docker镜像的预期用途

  docker:
   image: docker
   ports: 
    - "2376:2376"
   stdin_open: true
   tty: true
   volumes:
    - /var/run/docker.sock:/var/run/docker.sock

我对Docker尤其是网络方面还很陌生,一直在研究docker-machine,docker-swarm和Kubernetes之类的东西来寻找最佳解决方案。

对此的任何见解都将不胜感激,因为此项目的最大障碍是让我的后端API与部署环境中的Docker进行对话。

docker networking docker-compose docker-machine
1个回答
0
投票
我不知道这是否对每个人都有效,但在我的项目中添加钱就可以满足我的需要。
© www.soinside.com 2019 - 2024. All rights reserved.