无法建立和运行docker映像

无法建立和运行docker映像,docker,dockerhub,Docker,Dockerhub,昨天我下载了一张hopsoft/graphite statsd docker的图片。 当我现在进入docker终端并输入docker images时,我得到: bash-3.2$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE hello-world latest af340544ed62

昨天我下载了一张hopsoft/graphite statsd docker的图片。 当我现在进入docker终端并输入
docker images
时,我得到:

bash-3.2$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
hello-world         latest              af340544ed62        2 weeks ago         960 B
<none>              <none>              89bd20e2deb3        3 weeks ago         785.7 MB
bash-3.2$ 
它就挂在那里

所以,我决定删除它,然后再次下载

但是,在运行docker rmi 89bd20e2deb3时,我得到以下信息:

bash-3.2$ docker run 89bd20e2deb3
*** Running /etc/my_init.d/00_regen_ssh_host_keys.sh...
No SSH host key available. Generating one...
Creating SSH2 RSA key; this may take some time ...
Creating SSH2 DSA key; this may take some time ...
Creating SSH2 ECDSA key; this may take some time ...
Creating SSH2 ED25519 key; this may take some time ...
invoke-rc.d: policy-rc.d denied execution of restart.
*** Running /etc/rc.local...
*** Booting runit daemon...
*** Runit started as PID 94
bash-3.2$ docker rmi 89bd20e2deb3
Error response from daemon: Conflict, cannot delete because 89bd20e2deb3 is held by an ongoing pull or build
Error: failed to remove images: [89bd20e2deb3]
bash-3.2$ 
现在,我开始玩我的
docker技巧
:)。如何在我的机器上启动并运行此映像?我真的需要所有我能得到的帮助。

顺便说一句(这是一个部分答案),当你看到:

*** Running /etc/rc.local...
*** Booting runit daemon...
*** Runit started as PID 94
这不是“只是挂着”。容器启动了
runit
,这是一个与
init
systemd
非常类似的过程管理器,它可能随后启动了容器内的其他过程。你可以看到它们在做类似的事情:

pstree -p $(docker inspect --format '{{.State.Pid}}' <container_id>)
pstree-p$(docker-inspect——格式“{{.State.Pid}”)
现在,由于89bd20e2deb3是一个中间图像(可能是您试图提取的graphite图像所使用的层),因此完全有可能
runit
实际上没有启动任何其他内容

这里的关键点是,当您运行
docker
图像时,您不一定会得到某种交互式提示。容器可以启动网络可访问的服务(例如ssh服务器或web服务器),您可能需要使用该机制与容器进行交互

基于,这似乎是该图像的情况。这些文档提供了服务正在侦听的端口列表


但是你还没能成功地提取图像。问题的线索可以在docker守护程序日志中找到……在哪里找到这些日志取决于您的发行版。在一个
systemd
的世界里,答案是
journalctl-b-u docker
。在旧式环境中,日志可以在syslog放置的任何位置找到(可能是
/var/log/messages
或类似内容)。

标记为
的图像不是
hopsoft/graphite statsd
。如果您有该图像,它将被标记为
hopsoft/graphite statsd
。这表明您的
docker pull
可能已失败。现在,当我尝试运行
docker pull hopsoft/graphite statsd
时,什么都没有发生,它只是挂起@Larsks好的,所以我决定重新启动我的机器以停止所有进程,然后当我重新启动并尝试
docker rmi
时,我成功地将其删除,然后
docker pull
命令正常工作。谢谢@larsks现在一切似乎都好了:)。