无法使用docker-compose在http + docker:// localhost上连接到Docker守护程序

Vic*_*ira 4 docker dockerfile docker-compose docker-container

我有这个React应用,我想在Apache HTTP Docker容器上运行。

所以,我创建了一个Dockerfile与工作sudo docker buildsudo docker run <name>

FROM httpd:2.4
COPY ./dist/ /usr/local/apache2/htdocs/
Run Code Online (Sandbox Code Playgroud)

我创建了一个docker-compose.yml

version: '3'
services:
  frontend:
    build: .
    ports:
     - "8080:80"
    container_name: frontend
Run Code Online (Sandbox Code Playgroud)

但是,当我运行时,出现sudo docker-compose build此错误:

错误:无法在http + docker:// localhost上连接到Docker守护程序-它正在运行吗?

如果它位于非标准位置,请使用DOCKER_HOST环境变量指定URL。

问题是什么?

Max*_*kov 39

检查您的权限,以下命令解决了我的问题:

sudo chown $USER /var/run/docker.sock
Run Code Online (Sandbox Code Playgroud)

当您尝试以非超级用户身份启动 docker 并且它无法访问自己的套接字时,就会发生这种情况。


mes*_*shy 7

我遇到了这个,发现我的用户不在该docker组中,因此没有权限。

您可以通过运行来检查这一点groups。如果docker不在打印的列表中,这可能是您的问题。

您可以通过以下方式将您的用户添加到docker组中:

sudo usermod -aG docker yourUserName
Run Code Online (Sandbox Code Playgroud)

将我的用户添加到 docker 组后,我必须注销并再次登录才能使更改生效。

编辑:我在全新安装中执行了此操作,发现我需要重新启动才能工作。如果您不确定失败的原因,请尝试重新启动!


bri*_*ive 6

在运行任何 Docker 命令之前,您需要在主机上运行 Docker 守护进程:

sudo systemctl start docker
Run Code Online (Sandbox Code Playgroud)


max*_*x3d 6

使用sudo运行:

须藤码头工人组成-d

  • 不要使用“sudo”,而是按照:https://docs.docker.com/install/linux/linux-postinstall/ (4认同)

小智 5

我的解决方案是仅重新启动包装盒(EC2 Amazon Linux2)。用权限和组将我的尾巴追了30分钟,但是简单的重启就可以了。