[英]Jenkins + AWS agent = error only in php-project's job, Java-projects' jobs work fine: /var/run/docker.sock: connect: permission denied
[英]Unable to connect to unix:///var/run/docker.sock (Permission denied) from PHP code
我使用 Docker Windows 工具箱
我用 PHP-FPM 創建了 docker 容器:
docker run -d -v /var/run/docker.sock:/var/run/docker.sock php:7.0-fpm-alpine
如果我直接從容器外殼使用 curl:
curl --unix-socket /var/run/docker.sock http://containers/json
我得到了正確的答案。
但是如果使用 PHP 代碼:
$socket = stream_socket_client('unix:///var/run/docker.sock', $errno, $errstr);
if ($socket){
$request = 'GET /version HTTP/1.1'."\r\n";
$request.= 'Connection: Close'."\r\n\r\n";
fwrite($socket,$request);
$response = stream_get_contents($socket);
fclose($socket);
print_r($response);
}
else {
print_r($errstr);
}
然后我收到以下錯誤:
警告:stream_socket_client():無法連接到 unix:///var/run/docker.sock(權限被拒絕)
PHP 在 www-data 用戶下工作。 我試圖在 root 下運行 PHP-FPM,但出現 PHP-FPM 錯誤,我無法在 root 下運行 php。
我嘗試在容器內創建“docker”用戶/組,然后在“docker”用戶/組下運行 PHP-FPM,但沒有幫助。
我該如何解決?
確保/var/run
有r
和x
為所有用戶特權和docker.sock
和模式docker.sock
是0777
將 docker.sock 的權限更改為 0755
chmod 755 /var/run/docker.sock
它也適用於所有人
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.