У меня есть сценарий, в котором docker нужно запустить внутри контейнера. Я использую родственный подход docker (Docker За пределами Docker). В этом случае docker устанавливается в основном образе, и при запуске контейнера для этого образа /var/run/docker.sock
используется как объем; это позволяет запускать экземпляр docker из контейнера. Запуск исходного контейнера: docker run --rm -v "/var/run/docker.sock:/var/run/docker.sock" ...
.
Однако, если пользователь в этом исходном контейнере не root, я получаю следующую ошибку при запуске docker внутри контейнера:
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fva
r%2Frun%2Fdocker.sock/v1.40/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'
Одним из способов решения этой проблемы было запустите контейнер как пользователь root, используя флаг -u0
: docker run --rm -u0 -v "/var/run/docker.sock:/var/run/docker.sock" ...
. Затем можно получить доступ к docker.
Теперь мне нужно использовать не root пользователя для начального контейнера. Для этого я сделал следующее:
$ docker run --rm -u0 -t -v "/var/run/docker.sock:/var/run/docker.sock" dood-image bash -c "chmod a+rwx /var/run/docker.sock"
Затем, когда я запускаю команду docker как пользователь, не root, она работает нормально:
$ docker run --rm -t -v "/var/run/docker.sock:/var/run/docker.sock" dood-image bash -c "docker run hello-world"
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
...
...
My вопрос в том, каковы последствия изменения разрешений для файла /var/run/docker.sock
? Могут ли возникнуть проблемы с безопасностью?