我有以下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之类的命令不起作用。
答案 0 :(得分:4)
您不能(*)在Docker容器或映像中运行Docker。您不能(*)在Dockerfile中启动后台服务。如您所说,systemctl
和service
之类的命令在任何地方的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 &