如果容器重新启动,则docker中的Docker无法启动

时间:2017-01-24 23:02:36

标签: docker docker-compose dockerfile

我们在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/bashservice docker start来手动启动docker ps

我不确定如何进行调试,欢迎任何建议。

1 个答案:

答案 0 :(得分:0)

原来是这个docker认为它和/或者包含的内容仍在运行(它不是,但是PID文件没有被清除)

调试问题的推荐启动方法:查看日志文件。我很震惊这个启示。

无论如何在rm /var/run/docker/libcontainerd/docker-containerd.pid /var/run/docker.pid修复它之前将service docker start添加到启动命令。