无法通过unix:///var/run/docker.sock连接到Docker守护程序。泊坞窗守护程序正在运行吗?在Dockerfile中

时间:2018-08-15 11:13:51

标签: docker dockerfile hyperledger-fabric hyperledger hyperledger-composer

我有以下Dockerfile:

FROM ubuntu

ENV NPM_CONFIG_LOGLEVEL warn
ENV admin_user="PeerAdmin" network_name=$1 version=$2 hversion=hlfv1     fabrik_path=/fabric-tools project_dir=$(pwd) 
ENV card_store_dir=$project_dir/.card-store stage_dir=$project_dir/.stage     env_dir=$project_dir/env is_ok=1 FABRIC_VERSION=hlfv1 

WORKDIR /app
COPY . /app

USER root
# RUN chown -R ubuntu:ubuntu .
WORKDIR /app
RUN apt-get update && \
    mkdir "$fabrik_path" && \
    cd "$fabrik_path" && \
    export FABRIC_VERSION=hlfv1 && \
    apt-get -y install apt-transport-https ca-certificates curl software-properties-common && \
    apt-get -y install curl && \
    apt-get -y install unzip && \
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && \
    apt-get -y install docker.io && \
    curl -O https://raw.githubusercontent.com/hyperledger/composer-tools/master/packages/fabric-dev-servers/fabric-dev-servers.zip && \
    unzip fabric-dev-servers.zip && \
    service docker start && \
    ./downloadFabric.sh && \
    ./startFabric.sh

尝试执行它,我收到一个错误:

**Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?**

service docker start或systemctl之类的命令不起作用。

7 个答案:

答案 0 :(得分:4)

您不能(*)在Docker容器或映像中运行Docker。您不能(*)在Dockerfile中启动后台服务。如您所说,systemctlservice之类的命令在任何地方的Docker内部均不起作用(*)。而且无论如何,您都无法从Dockerfile中的任何位置使用任何主机系统资源,包括主机的Docker套接字。

您需要重新设计此Dockerfile,使其仅安装软件,而不尝试启动它。理想情况下,容器只能启动一台服务器,并将其作为CMD在前台运行;否则,如果需要,您可能依赖supervisord之类的东西来拥有多个服务器。如果您的应用程序严重依赖于能够在Docker中启动功能,那么您可能会发现将其安装在虚拟机中要容易得多。

(*)从技术上讲,有很多方法可以完成所有这些操作,但是它们都很棘手,复杂并且会产生影响(可能会给您的容器提供对主机的不受限制的根访问权限,并且您的容器启动会主动重新配置一些级别的主机详细信息)。

答案 1 :(得分:2)

启动终端并执行以下命令:

$ sudo service --status-all

$ sudo service docker start

https://appuals.com/cannot-connect-to-the-docker-daemon-at-unix-var-run-docker-sock/ 方案四:使用Service命令启动Docker

答案 2 :(得分:0)

该错误可能来自“服务docker启动”。如果您想按照上游供应商的安装说明来安装Docker容器,则需要为此准备环境。我可以使用dockers-systemctl-replacement脚本轻松地运行这些命令。

答案 3 :(得分:0)

我也遇到同样的问题,请在您的终端中运行此命令。这解决了问题。

 sudo apt-get install docker-ce docker-ce-cli containerd.io

答案 4 :(得分:0)

可能是您登录docker引擎的用户没有正确的权限。您可以使用以下命令将用户添加到docker组:

sudo usermod -a -G泊坞窗$ USER

$ USER是当前登录用户的用户名。谢谢

答案 5 :(得分:0)

尝试此cmd:

sudo service docker restart

答案 6 :(得分:-1)

使用sudo运行Docker。如果那不起作用,请尝试通过以下方式运行守护程序:

sudo nohup docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock &