代码之家  ›  专栏  ›  技术社区  ›  Cerin

无法启动Docker项目

  •  0
  • Cerin  · 技术社区  · 6 年前

    我在跟踪 this Docker tutorial 创建了一个简单的Docker管理的django站点,当我尝试运行 docker-compose up 要启动我的Docker项目,我会得到不明确的错误:

    ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?
    

    错误表明docker守护进程没有运行,但是 service docker status 显示Docker守护进程正在运行。

    如果我改为跑 sudo docker-compose up ,然后它成功了,但是它会将我的许多本地开发文件发送给根用户,这很容易修复,但很烦人。

    为什么Docker只需要根访问就可以启动本地Django开发服务器?我该怎么解决这个问题?

    我的版本:

    Docker version 18.06.1-ce, build e68fc7a
    docker-compose version 1.11.1, build 7c5d5e4
    Ubuntu 16.04.5 LTS
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   David Maze    6 年前

    如果您可以运行任何docker命令,那么您可以非常简单地将主机根目录:

    docker run --rm -v /:/host busybox \
      cat /host/etc/shadow
    

    此外,Docker容器经常在自己的容器空间中作为根运行,这意味着无论您选择向其公开主机文件系统的哪个部分,它们都可以作为任意用户ID进行任意更改。您可以使用 docker run -u 选择不同的用户ID,但您可以选择 任何 用户ID,甚至是属于共享系统上另一个用户的ID。

    使用起来很合理 sudo 作为一种获得需要根权限的方法,这是一种典型的开箱即用的Docker配置。

    一天结束时,唯一真正的入口是文件上的Unix权限。 /var/run/docker.sock . 这通常是模式0660所拥有的专用 docker 组。如果你不介意你的普通用户在没有任何控制的情况下读写任意的主机文件,你可以把自己添加到这个组中。这通常适用于开发人员的笔记本电脑;但对于任何类似于生产系统的东西,它都需要真正考虑其安全性的影响。