通过Docker Remote API连接容器

5
我想使用Docker远程API v1.7将子Mongo容器链接到父节点容器。在HostConfig中看到了“Links”属性,我猜想它会被传递给POST /containers//start请求。
{
  "Links": ["<container-name>:<alias>", ...]
}

我不知道如何给Mongo容器命名,以便在启动Node容器时使用。是否有与CLI -name标志对应的API可用于docker run

我是否需要单独发出GET /containers/<id>/json请求并接受自动生成的名称?


2
这并不是真正回答你的问题,但每当我想知道“API怎么做这个鬼东西”的时候,我就会嗅探docker cli和API之间的通信。我使用tcpflow或socat进行嗅探,具体取决于docker守护程序是否通过tcp或套接字进行监听。 - Geoffrey Bachelet
1个回答

9
在当前的(1.8)API中,-name标志作为查询字符串传递到POST /v1.8/containers/create,即像这样:
POST /v1.8/containers/create?name=redis_ambassador

(为了简洁起见,POST主体未包含在内)

我通过使用Geoffrey Bachelet的绝佳建议,使用以下命令将socat作为代理来执行所有docker CLI命令,从而解决了这个问题:

# on one terminal  
sudo socat -t100 -v UNIX-LISTEN:/tmp/proxysocket.sock,mode=777,reuseaddr,fork UNIX-CONNECT:/var/run/docker.sock

# on a second terminal  
export DOCKER_HOST="unix:///tmp/proxysocket.sock"  

接下来的docker命令将通过socat代理,并且它们的CLI调用将显示在另一个终端上。


socat代理非常棒,感谢您和Geoffrey Bachelet的提示! - Ted M. Young

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接