我在机器上设置了docker-io,并且用户属于docker组,因此运行docker镜像没有问题。我有一个基于node:0.10.38的图像,可以像这样运行它:
docker run -d --name=original_node --expose=5858,8081 \
-v /opt/users/pwebster:/opt/users/pwebster \
pwebster/openacademy:v01 node --debug server.js \
-c /opt/users/pwebster/orion/nodejs/search-orion.conf
这很好。当我将第二个容器链接到第一个容器时,它失败并显示了一些神秘的错误:
docker run --link=original_node:pw --name=link_node \
-v /opt/users/pwebster:/opt/users/pwebster -ti \
pwebster/openacademy:v01 /bin/bash -l
然后,此命令返回错误:
FATA[0001] Post http:///var/run/docker.sock/v1.16/containers/9af64a9c282b3fbec613eec2f79f05b12919a5c558f722a0ccb292b2e96ec475/start: EOF. Are you trying to connect to a TLS-enabled daemon without TLS?
这些配置没有什么特别的,搜索返回许多
Are you trying to connect to a TLS-enabled daemon without TLS?
,这似乎是默认的错误消息,但是没有任何提及Post失败的末尾带有“/ start”。它仅包含导致
--link
失败的docker run
。任何提示,不胜感激。编辑: docker -d -D日志
当我再次使用
/bin/bash
和--link
运行图像时,我在/var/log/docker
中得到以下内容time="2015-04-22T08:49:19-04:00" level="debug" msg="Calling POST /containers/{name:.*}/start"
time="2015-04-22T08:49:19-04:00" level="info" msg="POST /v1.16/containers/6f14a062cd1589d2c40238ec04042f54c7092702bad1a8ec977099aa3addfa67/start"
time="2015-04-22T08:49:19-04:00" level="info" msg="-job allocate_interface(6f14a062cd1589d2c40238ec04042f54c7092702bad1a8ec977099aa3addfa67) = OK (0)"
time="2015-04-22T08:49:19-04:00" level="info" msg="+job link(-I)"
time="2015-04-22T08:49:19-04:00" level="info" msg="-job link(-I)"
time="2015-04-22T08:49:19-04:00" level="info" msg="-job start(6f14a062cd1589d2c40238ec04042f54c7092702bad1a8ec977099aa3addfa67)"
2015/04/22 08:49:19 http: panic serving @: strconv.ParseUint: parsing "5858,8081": invalid syntax
goroutine 73 [running]:
net/http.func·011()
/usr/lib/golang/src/pkg/net/http/server.go:1100 +0xb7
runtime.panic(0xa38a20, 0xc2080e4600)
/usr/lib/golang/src/pkg/runtime/panic.c:248 +0x18d
github.com/docker/docker/nat.Port.Int(0xc20863f300, 0xd, 0xc20863f30a)
/builddir/build/BUILD/docker-1.4.1/_build/src/github.com/docker/docker/nat/nat.go:57 +0x98
github.com/docker/docker/daemon/networkdriver/bridge.LinkContainers(0xc2084f2f80, 0x7f25313d78a8)
[...snip...]
time="2015-04-22T08:49:19-04:00" level="debug" msg="Closing buffered stdin pipe"
time="2015-04-22T08:49:19-04:00" level="debug" msg="attach: stdin: end"
time="2015-04-22T08:49:19-04:00" level="debug" msg="attach: job 1 completed successfully"
time="2015-04-22T08:49:19-04:00" level="debug" msg="attach: waiting for job 2/3"
time="2015-04-22T08:49:19-04:00" level="debug" msg="attach: stdout: end"
time="2015-04-22T08:49:19-04:00" level="debug" msg="attach: stderr: end"
我的意思是它不喜欢我的
--expose=5858,8081
最佳答案
我将原始容器上的--expose=5858,8081
更改为--expose=5858 --expose=8081
,问题消失了。
好像我在滥用暴露标志。
关于docker - 出现EOF错误时如何获得2个容器进行链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29783315/