【发布时间】:2019-11-11 11:53:53
【问题描述】:
为我的论文做一个项目,该项目涉及一个角度前端,该前端与需要使用 docker 从图像创建容器的节点 API 后端通信,运行几行代码用于控制台输出。
我使用 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'ReferenceError: docker is not defined' 从 docker 容器(后端)连接时,但我不确定 docker-machine 是否正常运行在我的主机上,就像我在使用 hyper-v 的 Windows 10 上一样。
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:dind图像。 github.com/docker-library/docker/blob/… -
关于这个问题我有什么可以澄清的吗?我尝试将 dind 图像添加到我的 docker 作曲家,但仍然得到“docker is undefined”。我将其添加为“docker”公开端口 2376,并尝试使用 Docker({host: 'docker', port: 2376}); 从我的 API 连接
-
无法连接Docker是什么意思?您是否尝试在另一个容器中运行您的前端和后端图像?
-
iv 更新了我的问题,包括我的 docker-compose.yml 和上面的更多细节。简而言之,我想以某种方式使用 dockerode 将我的后端容器连接到 docker。
标签: docker networking docker-compose docker-machine