如何安全地从容器中获取rer到docker.sock?

时间:2018-05-02 12:42:34

标签: php linux docker docker-compose

我使用docker-php和nginx + php-fpm(docker-compose项目)。当我试图从documentation

运行示例时
<?php
use Docker\API\Model\ContainersCreatePostBody;
use Docker\Docker;
$docker= Docker::create();
$containerConfig = new ContainersCreatePostBody();
$containerConfig->setImage('nginx:latest');
$containerConfig->setCmd(['echo', 'I am running a command']);
$containerCreateResult = $docker->containerCreate($containerConfig);
var_dump($containerCreateResult);
exit;

我收到了错误:

Http \ Client \ Socket \ Exception \ ConnectionException - Permission denied

据我所知,问题是php-fpm正在使用的用户组没有对docker.sock的rw权限(我是从运行docker的主机上安装它)。

配置:

搬运工-撰写:

shell目录包含yii2上的一个应用程序,由docker-php使用。

version: '2'
services:
web:
  image: 'nginx:latest'
  container_name: web
  ports:
    - '80:80'
    - '443:443'
  volumes:
    - './:/shell'
  networks:
    - backend
    - frontend
  restart: always
php:
  build: ./docker/php/
  container_name: php
  volumes:
    - './:/shell'
    - '/var/run/docker.sock:/var/run/docker.sock'
  environment: []
  networks:
    - backend
  restart: always
networks:
frontend:
  driver: bridge
backend:
  driver: bridge

用于php-fpm的Dockerfile:github gist(用于发布~100行的文件太大)

为实验安装了Docker,因此在容器php-fpm中没用。

软件版本:

  • Docker版本1.13.1
  • docker-compose版本1.8.0
  • Kubuntu 17.10 x64

我在互联网上发现了类似内容(onetwothree ...),决定是添加应用程序在容器中运行的用户,到集团www-data。

如果我将777权限分配给docker.sock,那么一切都会正常工作,但这是一个糟糕的解决办法=)

0 个答案:

没有答案