Docker Remote API 1.17 容器创建后,通过docker ps -a 无法看到指定的开放端口;启动正常但马上退出
版本
192.168.59.103为client,Docker版本为1.5.0。
192.168.1.171为docker daemon server,Docker版本为1.6.0。
Remote Api 为V1.17。
Registry 使用的是官方提供的镜像,提供服务的地址为 http://192.168.1.171:5000。
现象
通过如下参数创建了容器,本意是想放开22端口,通过docker start 启动,然后通过docker exec -it进入容器,现在的问题是:
1. 通过POST /containers/create创建正常,但是通过docker ps -a 查看时,Ports并未标识有打开容器22端口, 如下:
➜ /Users/xg/go/src/gaas git:(master) ✗ >docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b3cd38c7210b 192.168.1.171:5000/library/gp:20140801 "/usr/sbin/sshd -D / 9 seconds ago
2.
docker start
启动正常,但是马上就退出了,导致无法进行docker exec -it进行登录。请有经验的同学帮忙分析下,谢谢了。
附:创建参数
{"Image":"192.168.1.171:5000/library/gp:20140801",
"Hostname":"",
"Domainname":"",
"User":"",
"Memory":268435456,
"MemorySwap":0,
"CpuShares":1,
"Cpuset":"",
"AttachStdin":true,
"AttachStdout":true,
"AttachStderr":true,
"PortSpecs":null,
"ExposedPorts":{"22/tcp":{}},
"Tty":false,
"OpenStdin":false,
"StdinOnce":false,
"Env":null,
"Cmd":,
"Volumes":{},
"WorkingDir":"",
"Entrypoint":,
"NetworkDisabled":false,
"OnBuild":null,
"HostConfig":{"Binds":[],"ContainerIDFile":"","LxcConf":null,"Privileged":true,"PortBindings":{"22/tcp":},
"Links":[],
"PublishAllPorts":false,
"Dns":null,
"DnsSearch":null,
"VolumesFrom":null,
"NetworkMode":"bridge",
"RestartPolicy":{"Name":"no","MaximumRetryCount":0
1 个回复
shlallen - DaoCloud软件工程师,合伙人
赞同来自:
如果您去查看容器启动日志的话,肯定会发现sshd的参数有误,应该会是Extra argument /bin/sh。
对于您的容器而言,启动命令是entrypoint+cmd,也就是/usr/sbin/sshd -D /bin/sh -c,此时/bin/sh -c也作为sshd的参数被传了进来,导致出问题。
如果您不指定cmd的话,就没有问题了。
直接执行命令docker run -d -p a:b image
使用docker remote API的时候,也不要指定cmd