[英]Run docker inside docker as non root user
当用户不是 root 用户时,如何在 docker 容器内运行 docker 命令?
这背后的原因(以非根用户身份运行)是(第一个)容器在已安装的卷上创建了一些文件。 如果容器中的用户是 root,那么这些文件的所有者也是 root。 如果我使用与主机系统相同的用户运行容器,那么这些文件具有正确的用户和组。
docker run --rm -it -u $(id -u):$(id -g) -v /var/run/docker.sock:/var/run/docker.sock ubuntu /bin/bash
// inside container:
// assume docker binary is available
docker pull alpine
当以非 root 用户身份运行时出现以下错误,这将不起作用:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/create?fromImage=alpine&tag=latest: dial unix /var/run/docker.sock: connect: permission denied
Docker:
docker run -it -u $(id -u):$(id -g) --group-add $(getent group docker | cut -d ':' -f 3) --rm -v /var/run/docker.sock:/var/run/docker.sock docker docker --version
对于 Docker Compose 在您的服务下设置group_add
并设置环境变量:
export DOCKER_GROUP_ID=$(getent group docker | cut -d ':' -f 3);
services:
myservice:
image: docker
group_add:
- ${DOCKER_GROUP_ID}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.