我使用 docker-compose
创建一个容器互连的“公园”。这里没什么特别的,我有 API/前端/后端等。有我的 docker-compose.yml
:
version: "2"
services:
api:
build: ./deimos_api/docker
ports:
- "39999:80"
volumes:
- ./deimos_api:/root/deimos_api
asset:
build: ./deimos_asset/docker
ports:
- "8000:80"
volumes:
- ./deimos_asset:/root/deimos_asset
depends_on:
- api
links:
- api
data-manager:
build: ./deimos_data_manager/docker
ports:
- "3333:3333"
volumes:
- ./deimos_data_manager:/root/deimos_data_manager
depends_on:
- api
links:
- api
backend:
build: ./deimos_backend/docker
ports:
- "1080:80"
volumes:
- ./deimos_backend:/root/deimos_backend
- /var/run/docker.sock:/var/run/docker.sock
depends_on:
- api
- asset
links:
- api
我刚刚了解到在新网络上创建一个像这个链接容器一样的“公园”。
docker network ls
结果:NETWORK ID NAME DRIVER
448daa341d56 bridge bridge
c7feeeb44cd0 deimos_default bridge
1fc2d6132b86 none null
a80e41eab3cc host host
该项目的另一部分是生成动态容器。但我希望新容器能够访问先前由
deimos_api
创建的 docker-compose
容器。我在 javascript 中使用
dockerode
(Docker Remote API 的包装器),代码如下:docker.createContainer({
"Image": config.dockerGameServerImageName,
"name": config.gameServerPrefix + serverName,
"Volumes": {"/root/deimos_server":{}}
}, function (err, container) {
if(err){
console.log(err);
reject(err);
} else {
container.start({
"PortBindings": { "80/tcp": [{"HostPort": lastPortUsed+""}]},
"Binds":[config.deimosServerVolumePath+":/root/deimos_server"],
"Links":[config.dockerApiContainerName+":api"]
}, function (err, data) {if(err) {
console.log(err);
reject(err);
} else {
console.log("Create container " + serverName);
gameContainer[config.gameServerPrefix + serverName] = lastPortUsed+"";
resolv({
'serverPort':lastPortUsed,
'serverName':serverName
});
}
});
}
});
但我有以下错误:
Error: HTTP code is 500 which indicates error: server error - Could not get container for deimos_api_1
知道如何在 dockerode 中指定如何加入特定网络(此处为 deimos_default)吗?
谢谢你。
编辑:我正在使用 docker 1.10.3、docker-compose 1.6.2 和 dockerode 2.2.10
最佳答案
我找到它了 !
将以下选项添加到 dockerode 启动过程中就成功了!
"HostConfig": {
"NetworkMode": "deimos_default"
}
在此处查找文档中的行:https://docs.docker.com/engine/reference/api/docker_remote_api_v1.22/#create-a-container
关于docker - 如何使用 docker 远程 API 连接到现有的 docker 网络(通过 dockerode),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36607483/