簡體   English   中英

無法從 PHP 代碼連接到 unix:///var/run/docker.sock(權限被拒絕)

[英]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/runrx為所有用戶特權和docker.sock和模式docker.sock0777

將 docker.sock 的權限更改為 0755

chmod 755 /var/run/docker.sock

它也適用於所有人

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM