<?php
error_reporting(-1);
ini_set('display_errors', '1');
$code = addslashes($_GET['code']);
echo shell_exec("/usr/bin/docker exec d6ebc1b02e76 perl -e '"$code'" 2>&1");
当从nginx执行这个PHP脚本时,我得到以下内容:
time="2015-07-30T23:46:03-04:00" level=fatal
msg="Post http:///var/run/docker.sock/v1.18/containers/d6ebc1b02e76/exec: dial
unix /var/run/docker.sock: permission denied. Are you trying to connect to a
TLS-enabled daemon without TLS?"
除了给nginx sudo访问docker之外,还有其他解决方案吗?
从
文档中提取https://docs.docker.com/installation/ubuntulinux/optional-configurations-for-docker-on-ubuntu
"为了避免在使用docker命令时使用sudo,请创建一个名为docker的Unix组并向其中添加用户。当docker守护进程启动时,它使Unix套接字的所有权由docker组读/写。"
你可以试试
如果您需要以非root用户运行docker命令:尝试如下a.创建用户'docker' -> #adduser docker, passwd dockerb.添加组docker -> groupadd dockerc. sudo usermod -aG docker
在/etc/sudoers中添加条目%sudo All=(All: All) All | %sudo All=(All: All) All