Не удается подключиться к unix:/ / / var / run / docker.носок (отказано в разрешении) из кода PHP

Не удается подключиться к unix:/ / / var / run / docker.носок (отказано в разрешении) из кода PHP

11.04.2016 02:17:46 Просмотров 33 Источник

Я использую Docker Windows Toolbox

Я создал контейнер docker с помощью PHP-FPM:

docker run -d -v /var/run/docker.sock:/var/run/docker.sock php:7.0-fpm-alpine

Если я использую curl непосредственно из контейнера shell:

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:///ВАР/работа/докер.носок (разрешение отклонено)

PHP работает под управлением www-data user. Я попытался запустить PHP-FPM под root, но получил ошибку PHP-FPM, что я не могу запустить php под root.

Я попытался создать пользователя/группу" docker "внутри контейнера, затем запустил PHP-FPM под пользователем/группой" docker", но это не помогло.

Как я могу это исправить?

У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/36547207/unable-to-connect-to-unix-var-run-docker-sock-permission-denied-from-php-co#comment60696791_36547207
Может быть, это может быть проблема версии curl. Поддержка Unix сокета в curl была добавлена относительно недавно. Используется ли в коде приложения тот же локон, что и bash?
https://stackoverflow.com/questions/36547207/unable-to-connect-to-unix-var-run-docker-sock-permission-denied-from-php-co#comment60706791_36547207
Упомянутый PHP-код не использует curl. Я не могу найти подход, используя PHP curl с сокетом.

Ответы - Не удается подключиться к unix:/ / / var / run / docker.носок (отказано в разрешении) из кода PHP / Unable to connect to unix:///var/run/docker.sock (Permission denied) from PHP code

Toby

27.02.2018 07:08:51

Убедитесь/var/runимеет rи xдля всех пользователей и docker.sockи режим docker.sock является 0777

https://stackoverflow.com/questions/36547207/unable-to-connect-to-unix-var-run-docker-sock-permission-denied-from-php-co/49000962#comment89363515_49000962
Вы уверены, что это хорошая идея, чтобы установить 0777 разрешений на сокет? Не означает ли это, что каждый может использовать Docker на машине без прав root?
Salah

02.02.2020 07:49:56

изменение разрешения docker.носок для 0777

chmod 777 /var/run/docker.sock

это также Работа для всех

Закрыть X