Docker:来自守护进程的错误响应:没有这样的id:

时间:2015-10-06 09:15:29

标签: docker dockerfile

目前我尝试使用docker run -d ID在deamon上启动docker镜像(之后启动此命令:docker build -t toto .

但是当我发布这个命令:docker exec -it ID bash时,我遇到了这个错误:

  

来自守护程序的错误响应:没有这样的id:toto

我的Dockerfile看起来像这样:

# Dockerfile
FROM debian:jessie

# Upgrade system
RUN apt-get update && apt-get dist-upgrade -y --no-install-recommends

# Install TOR
RUN apt-get install -y --no-install-recommends tor tor-geoipdb torsocks 

# INSTALL POLIPO
RUN apt-get update && apt-get install -y polipo

# INSTALL PYTHON
RUN apt-get install -y python2.7 python-pip python-dev build-essential libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev libxslt-dev libxml2-dev && apt-get clean

# INSTALL GIT
RUN apt-get install -y git-core

# INSTALL NANO
RUN apt-get install -y nano

# INSTALL SUPERVISOR
RUN apt-get install -y supervisor

# INSTALL SCRAPY and dependencies
RUN pip install lxml && pip install pyopenssl && pip install Scrapy   && pip install pyopenssl  && pip install beautifulsoup4  && pip install lxml   && pip install elasticsearch   && pip install simplejson  && pip install requests && pip install scrapy-crawlera && pip install avro && pip install stem

# INSTALL CURL
RUN apt-get install -y curl

# Default ORPort
EXPOSE 9001

# Default DirPort 
EXPOSE 9030

# Default SOCKS5 proxy port 
EXPOSE 9050

# Default ControlPort
EXPOSE 9051

# Default polipo Port
EXPOSE 8123

# Configure Tor and Polopo
RUN echo 'socksParentProxy = "localhost:9050"'  >> /etc/polipo/config
RUN echo 'socksProxyType = socks5'  >> /etc/polipo/config
RUN echo 'diskCacheRoot = ""' >> /etc/polipo/config

RUN echo 'ORPort 9001' >> /etc/tor/torrc
RUN echo 'ExitPolicy reject *:*' >> /etc/tor/torrc


ENV PYTHONPATH $PYTHONPATH:/scrapy

WORKDIR /scrapy
VOLUME ["/scrapy"]

提前致谢。

2 个答案:

答案 0 :(得分:7)

为了方便docker exec的使用,请确保使用名称运行容器:

docker run -d --name aname.cont ...

我在Dockerfile中看不到入口点或exec,所以在使用docker run -d

时请务必提及您想要运行的内容

(我想添加' .cont'作为命名约定,要记住它是容器名称,而不是图像名称)

然后docker exec aname.cont bash应该有效。

检查容器是否仍在使用docker ps -a

运行

答案 1 :(得分:2)

创建容器时,您应该使用图像名称:

  

docker run -d --name my_toto toto

创建时无法强制使用ID。分配ID的是Docker。

然后连接

  

docker exec -it my_toto bash

更快捷的方法是直接运行

  

docker run -d -it -name my_toto toto bash

退出后,容器仍然存在。