目前我尝试使用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"]
提前致谢。
答案 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
退出后,容器仍然存在。