更新:Docker 0.9.0现在使用libcontainer,与LXC不同,请参见:将进程附加到Docker libcontainer容器
我正在运行一个elasticsearch实例:
docker run -d -p 9200:9200 -p 9300:9300 dockerfile/elasticsearch
检查进程,结果如下所示:
$ docker ps --no-trunc
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
49fdccefe4c8c72750d8155bbddad3acd8f573bf13926dcaab53c38672a62f22 dockerfile/elasticsearch:latest /usr/share/elasticsearch/bin/elasticsearch java About an hour ago Up 8 minutes 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp pensive_morse
现在,当我尝试附加正在运行的容器时,出现了堆栈问题:
$ sudo docker attach 49fdccefe4c8c72750d8155bbddad3acd8f573bf13926dcaab53c38672a62f22
[sudo] password for lsoave:
tty无法连接且提示符未返回。使用lxc-attach完成相同操作是正常的:
$ sudo lxc-attach -n 49fdccefe4c8c72750d8155bbddad3acd8f573bf13926dcaab53c38672a62f22
root@49fdccefe4c8:/# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 49 20:37 ? 00:00:20 /usr/bin/java -Xms256m -Xmx1g -Xss256k -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMa
root 88 0 0 20:38 ? 00:00:00 /bin/bash
root 92 88 0 20:38 ? 00:00:00 ps -ef
root@49fdccefe4c8:/#
有人知道 Docker attach 的问题出在哪里吗?
NB. dockerfile/elasticsearch 最后的内容为:
ENTRYPOINT ["/usr/share/elasticsearch/bin/elasticsearch"]