无法连接到 unix:///var/run/docker.sock 上的 Docker 守护程序。 docker 守护进程是否正在运行?在 Dockerfile 中

新手上路,请多包涵

我有以下 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

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

无法连接到 unix:///var/run/docker.sock 上的 Docker 守护程序。 docker 守护进程是否正在运行?

诸如 service docker startsystemctl 之类的命令不起作用。

原文由 abadraja 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

您不能 (*) 在 Docker 容器或映像中运行 Docker。您不能 (*) 在 Dockerfile 中启动后台服务。正如您所说,像 systemctlservice 这样的命令(*)在 Docker 的任何地方都不起作用。在任何情况下,您都不能从 Dockerfile 中的任何位置使用任何主机系统资源,包括主机的 Docker 套接字。

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

(*) 从技术上讲,有很多方法可以做所有这些事情,但它们都非常棘手和复杂,并且会产生影响(可能会为您的容器提供对主机的不受限制的 root 访问权限,并且您的容器启动会主动重新配置一些低级主机细节)。

原文由 David Maze 发布,翻译遵循 CC BY-SA 4.0 许可协议

试试这个 cmd:

 sudo service docker restart

原文由 Amit Tiwari 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题