无法启动Docker项目

时间:2018-11-01 18:00:09

标签: django docker docker-compose

我正在跟踪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,则它成功了,但是它把我的许多本地开发文件丢给了root用户,这很容易修复,但很烦人。

为什么Docker仅启动本地Django开发服务器需要root访问权限?我该如何解决?

我的版本:

Docker version 18.06.1-ce, build e68fc7a
docker-compose version 1.11.1, build 7c5d5e4
Ubuntu 16.04.5 LTS

1 个答案:

答案 0 :(得分:0)

如果您完全可以运行任何Docker命令,则可以简单地将主机root:

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

此外,Docker容器经常在其自己的容器空间中以root用户身份运行,这意味着您选择将主机文件系统的任何部分公开给它们,它们可以作为任意用户ID进行任意更改。您可以使用docker run -u选项来选择其他用户ID,但是也可以选择任何用户ID,甚至可以选择属于共享系统上另一个用户的用户ID。

使用sudo作为获得需要它的东西的root特权的方法是非常合理的,这是一种典型的现成Docker配置。

在一天结束时,唯一真正的门是文件/var/run/docker.sock的Unix权限。这通常是专用docker组拥有的0660模式。如果您不介意普通用户无需太多控制就可以读写任意主机文件,则可以将自己添加到该组中。这通常适用于开发人员笔记本电脑之类的东西;但在类似生产系统的任何事物上,都应对其安全性含义进行一些实际考虑。