ограничивая связанный с хостом `docker.sock` внутри контейнера, ломает Docker хоста - PullRequest
2 голосов
/ 17 июня 2019

В обычной установке Docker для Mac мой docker.sock принадлежит моему локальному пользователю:

$ stat -c "%U:%G" /var/run/docker.sock

juliano:staff

Даже если я добавлю пользователя и группу на свой Dockerfile, при попытке запустить DinD от имени меня монтируется docker.sock с помощью root:root.

$ docker run -it --rm \
    --volume /var/run/docker.sock:/var/run/docker.sock \
    --group-add staff \
    --user $(id -u):$(id -g) \
    "your-average-container:latest" \
    /bin/bash -c 'ls -l /var/run/docker.sock' 

srw-rw---- 1 root root 0 Jun 17 07:34 /var/run/docker.sock

В противном случае, запустив DinD от имени root, chown заполняя сокет, затем запустив команды , прервет докер хоста .

$ docker run -it --rm \
    --volume /var/run/docker.sock:/var/run/docker.sock \
    --group-add staff \
    "your-average-container:latest" \
    /bin/bash

$ chown juliano:staff /var/run/docker.sock
$ sudo su juliano
$ docker ps

[some valid docker output]

$ exit

$ docker ps

Error response from daemon: Bad response from Docker engine

Я видел людей , сообщавших о том, что они едят, так что, возможно, я делаю что-то не так.

Вопросы:

  • Почему хост-докер ломается?
  • Есть ли какой-нибудь способ предотвратить поломку хост-докера и при этом дать моему пользователю разрешение на сокет внутри докера?

1 Ответ

1 голос
/ 17 июня 2019

Я полагаю, что когда вы монтируете том, UID / GID владельца устанавливается на тот же, что и на хост-машине (флаг --user просто позволяет вам запустить команду как определенный UID / GID, и это нене влияет на разрешение для монтируемого тома)

Главный вопрос - зачем вам жевать?Разве вы не можете просто запустить команды внутри контейнера от имени пользователя root?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...