【发布时间】:2015-03-03 04:07:22
【问题描述】:
当我尝试通过 PHP 启动 Docker 容器时,出现以下错误
level="fatal" msg="Get http:///var/run/docker.sock/v1.16/containers/json?limit=1: dial unix
/var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon
without TLS?"
我尝试通过 shell_exec 执行 docker run 命令,因此在 Ubuntu 14.04 上执行的用户是 www-data。为了更好地衡量,我尝试将 docker 命令作为 sudo 运行,但没有任何区别。谷歌搜索“你在尝试......”会出现一些链接,这些链接很可能包含一些相关信息 - 例如。 here - 但我还不能理解它。
另外,为了更好地衡量,我将尝试执行的 Docker 命令输出到 stderr,复制它并直接通过 SSH 执行它。这是那个命令
docker run -h user118 -d -p 8406:443 -v /var/docks/user118/logs:/var/log/apache2 -v
/var/docks/user118/mysql:/var/lib/mysql -v /var/docks/user118/redis:/var/lib/redis -v
/var/docks/user118/secure:/var/secure -v /var/docks/user118/site:/var/www/html lamp
紧随其后
docker ps -a
然后浏览到该容器 - 没问题,一切正常。
我知道该命令将按照“您应该每个容器只有一个应用程序”这样的方式激怒 cmets。这不是这里的问题。
我是在这里尝试不可能的事情,还是有一种相对简单的方法可以通过 PHP 脚本和 shell_exec 来操作 Docker?
【问题讨论】:
-
你能发布 PHP 中使用的完整命令来启动你的 docker 容器吗?
-
查看我编辑的问题 - 正如您所见,命令不是问题。从 bash 运行时,它可以毫无问题地完成工作
-
我猜当你从 bash 成功启动这个命令时,你的用户是 root(或者你有 docker 的别名,比如 sudo docker.io)。当你从 PHP 启动它时,它是用 sudo 启动的吗?
-
www-data是不是类似root(uid,gid)的账号?
-
你是对的 - 从 bash 我以 root 用户身份运行 docker 命令。从 PHP shell_exec 我以用户 www-data 运行:Ubuntu 上的“标准”apache 用户。你是什么意思类似于root。