docker环境下的jenkins容器,进入后执行docker命令提示权限不够
- 在docker下拉取jenkins镜像后,build 并 run 之后通过
docker exec it [containerID] /bin/bash
命令进入镜像后,再执行docker images
命令提示权限不够:Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.29/images/json: dial unix /var/run/docker.sock: connect: permission denied
。此时执行su
命令想获得权限发现所有密码都是不对的。
- 我的
Dockerfile
文件内容:
FROM jenkins:alpine
USER root
RUN curl -O https://get.docker.com/builds/Linux/x86_64/docker-latest.tgz \
&& tar zxvf docker-latest.tgz \
&& cp docker/docker /usr/local/bin/ \
&& rm -rf docker docker-latest.tgz
ARG DOCKER_GID=999
USER jenkins:${DOCKER_GID}
- 我的
docker run
命令:
docker run -p 49002:8080 --name jenkins_docker -d -v /Users/UserName/jenkins_docker:/var/jenkins_home -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock jenkins_docker
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
正常的做法docker images 应该是宿主机执行的。不是在docker容器中执行。
就算你做了文件映射, docker容器也不能执行宿主机的程序。
docker的目地之一就是隔离出各各运行环境。
如果docker容器中可以运行宿主机的程序,docker就会有严重的安全问题。
请问,楼主该问题解决了么,现在使用docker的jenkins镜像也面对同样的一个问题,查了一下资料,是要在docker容器中调用宿主机的docker命令,但这样使用docker确实安全性
首先我们要从源头排查,看下你的Dockerfile,看USER命令。USER是用来切换运行属主身份的,Docker 默认是使用 root,但若不需要,建议切换使用者身份,毕竟 root 权限太大了,使用上有安全的风险。显而易见,你指定了USER jenkins:${DOCKER_GID},你构建的镜像,run起来exec连进去,你的操作环境就在jenkins用户环境下,我想它肯定没有足够的权限去玩docker命令,然你的需求是要足够的权限,那就应该把USER jenkins:${DOCKER_GID}这一行注释掉重新构建镜像,让它连进去就是root用户环境。
docker关于权限的问题可以看看这篇
https://kalasearch.cn/community/tutorials/how-to-install-and-use-docker-on-ubuntu/