首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用码头远程API连接到现有的码头网络(通过dockerode)

如何使用码头远程API连接到现有的码头网络(通过dockerode)
EN

Stack Overflow用户
提问于 2016-04-13 19:09:57
回答 1查看 2.2K关注 0票数 4

我使用docker-compose创建一个“公园”的容器相互链接。这里没有什么特别的,我有API/前端/后端等等。这是我的docker-compose.yml

代码语言:javascript
复制
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

我只知道在一个新的网络上创建一个像这样的链接容器的"park“。docker network ls结果:

代码语言:javascript
复制
NETWORK ID          NAME                DRIVER
448daa341d56        bridge              bridge              
c7feeeb44cd0        deimos_default      bridge              
1fc2d6132b86        none                null                
a80e41eab3cc        host                host   

项目的另一部分是在飞行容器上生成。但是,我希望新的容器访问以前由deimos_api创建的docker-compose容器。

我在javascript中使用dockerode ( Docker的包装器),代码如下:

代码语言:javascript
复制
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
                });
            }
        });
    }
});

但我有以下错误:

代码语言:javascript
复制
Error: HTTP code is 500 which indicates error: server error - Could not get container for deimos_api_1

知道如何在dockerode中指定如何加入特定的网络(这里是deimos_default)吗?

谢谢。

编辑:我使用的是码头1.10.3,码头-合成1.6.2和码头2.2.10

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-13 19:35:02

我找到它了!

添加以下选项到dockerode开始过程中,做了一些技巧!

代码语言:javascript
复制
"HostConfig": {
    "NetworkMode": "deimos_default"
}

在这里找到文档中的行:v1.22/#create-a-container

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36607483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档