从Docker容器运行Docker
为我的论文做一个项目,涉及一个角度前端,它与一个节点API后端对话,该后端需要使用docker从图像创建容器,为控制台输出运行几行代码 我使用docker compose为我的前端和后端创建了两个docker容器 我的后端(api)容器需要一种使用连接docker的方法,我不知道如何做到这一点从Docker容器运行Docker,docker,networking,docker-compose,docker-machine,Docker,Networking,Docker Compose,Docker Machine,为我的论文做一个项目,涉及一个角度前端,它与一个节点API后端对话,该后端需要使用docker从图像创建容器,为控制台输出运行几行代码 我使用docker compose为我的前端和后端创建了两个docker容器 我的后端(api)容器需要一种使用连接docker的方法,我不知道如何做到这一点 version: "3" services: app: build: ./frontend ports: - "3001:4200" volumes:
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机器,但每当我尝试通过“ReferenceError:docker未定义”从docker容器(后端)连接时,我不确定docker机器是否在我的主机上正确运行,因为我在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进行对话。我不知道这是否适用于所有人,但将dind添加到我的项目中可以满足我的需要
docker-in-docker:
image: docker:dind
environment:
DOCKER_TLS_CERTDIR: ""
privileged: true
volumes:
- /var/lib/docker
expose:
- 2375
- 2376
对于docker compose中连接到“docker中的docker”的任何容器,都需要在其服务中使用此功能。“DOCKER\u TLS\u CERTDIR”用于删除TLS
links:
- docker-in-docker
environment:
DOCKER_HOST: http://docker-in-docker:2375
DOCKER_TLS_CERTDIR: ""
对于任何使用DockerRode的人来说,当在我的本地使用async&Wait时,我会注意到docker是未定义的,但一旦将其移动到docker环境中,可以通过使用来修复。然后改为。您的问题不清楚,但我想您需要
docker:dind
图像。关于这个问题我能澄清些什么吗?我尝试将dind图像添加到我的docker composer中,但仍然得到“docker未定义”。我将其添加为“docker”公开的端口2376,并尝试使用docker({host:'',端口:2376})从我的API进行连接;你说不能和Docker联系是什么意思?您是否正在尝试从另一个容器中运行前端和后端图像?iv更新了我的问题,包括我的docker-compose.yml和上面的更多细节。简而言之,我想用docker将我的后端容器连接到docker。