我有以下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上的Docker守护程序:///var/run/docker. sock。Docker守护程序是否正在运行?service docker start
或systemctl
等命令不起作用。
8条答案
按热度按时间6qfn3psc1#
尝试此cmd:
ee7vknir2#
你不能()在Docker容器或映像中运行Docker。你不能()在Docker文件中启动后台服务。正如你所说,像
systemctl
和service
这样的命令在Docker中任何地方都不能()工作。而且在任何情况下,你都不能从Docker文件中的任何地方使用任何主机系统资源,包括主机的Docker套接字。您需要重新设计此Dockerfile,以便它只安装软件,而不尝试启动它。理想情况下,一个容器将只启动一个服务器,并将其作为CMD在前台运行;否则,如果必须的话,您可能会依赖于像supervisord这样的东西来拥有多个服务器。如果您的应用程序严重依赖于能够在Docker中启动,您可能会发现在虚拟机中安装要容易得多。
()从技术上讲,有很多方法可以完成所有这些事情,但它们都很棘手、复杂,并且会产生影响(可能会让您的容器不受限制地访问主机,并且容器启动时会主动重新配置一些低级别的主机细节)。
q9rjltbz3#
启动终端并执行以下命令:
第一个月
$ sudo service docker start
https://appuals.com/cannot-connect-to-the-docker-daemon-at-unix-var-run-docker-sock/解决方案4:使用服务命令启动Docker
mbskvtky4#
1.检查
docker.service
输出是这样的:
如果出现错误,请重新启动:
并再次检查
status
。如果没有解决,则下一步2.请求守护程序的套接字,查看它是否已启动:
输出仅为
OK
消息如果未获得
OK
,但获得了类似以下内容:3.检查套接字服务
一个好的输出将是:
并且重新启动它,即使它看起来很好。因为在停止守护进程并重新启动它之后,它不工作,我们应该(只要我知道)重新启动
docker.socket
。然而你却无法修复它?下一个:
4.直接在
debug
模式下运行守护进程cetgtptt5#
我遇到了同样的问题,在你的终端运行这个命令。这解决了问题。
0aydgbwb6#
错误可能来自“Service Docker start”。如果您想按照上游供应商的Docker容器安装说明操作,那么您需要为此准备环境。我可以使用dockers-systemctl-replacement脚本轻松地运行这些命令。
jm2pwxwz7#
可能是您登录到Docker引擎时使用的用户没有正确的权限。您可以使用以下命令将用户添加到Docker组:
$USER
是当前登录用户的用户名。pqwbnv8z8#
如果你用deb文件安装docker,可能不会安装docker cli。所以在安装docker之后,安装docker cli,@Jayanth 's answer