我们在docker容器中运行docker构建代理。 它基于debian jessie,并且如文档here所示直接从docker获取docker。
第一次启动容器时,docker守护程序运行正常,但不是第二次。 (如果你不删除容器)
Dockerfile
:
FROM debian:jessie
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get -y install -q \
apt-transport-https \
ca-certificates \
software-properties-common \
curl \
&& curl -fsSL https://yum.dockerproject.org/gpg | apt-key add - \
&& add-apt-repository \
"deb https://apt.dockerproject.org/repo/ \
debian-$(lsb_release -cs) \
main" \
&& apt-get update \
&& apt-get install -y \
docker-engine
CMD []
docker-compose.yml
:
services:
dockerTest:
container_name: dockerTest
privileged: true
image: tomeinc/intel-docker-node:latest
command: bash -c "service docker start && sleep 2 && docker ps"
要重现:使用docker build -t test .
构建Dockerfile,然后使用docker-compose up
两次。第二次,docker-ps
将失败
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
奇怪的是,如果容器继续运行,您可以通过运行docker
然后执行docker exec -it test /bin/bash
和service docker start
来手动启动docker ps
。
我不确定如何进行调试,欢迎任何建议。
答案 0 :(得分:0)
原来是这个docker认为它和/或者包含的内容仍在运行(它不是,但是PID文件没有被清除)
调试问题的推荐启动方法:查看日志文件。我很震惊这个启示。
无论如何在rm /var/run/docker/libcontainerd/docker-containerd.pid /var/run/docker.pid
修复它之前将service docker start
添加到启动命令。