运行 docker WSL2 中 jenkins 容器内的命令权限被拒绝
Run docker command inside jenkins container in WSL2 Permission denied
我在我的 Windows 10 笔记本上安装了 Docker Desktop,使用的是 debian 发行版。我遇到的问题是当我想 运行 docker 在带有 jenkins 的容器中时。
我用 docker-compose 创建了 jenkins 容器:
version: '2.4'
services:
jenkins:
image: jenkins/jenkins
user: root
privileged: true
container_name: jenkins
restart: unless-stopped
ports:
- 8080:8080
- 8443:8443
- 50000:50000
group_add:
- 1000
volumes:
- jenkins_home:/var/jenkins_home
- /c/Users/user/.docker/config.json:/root/.docker/config.json:ro
- /c/Users/user/.docker/machine/certs:/root/.docker:ro
- /var/run/docker.sock:/var/run/docker.sock
- /usr/local/bin/docker:/usr/bin/docker
environment:
- JENKINS_OPTS="--prefix=/jenkins"
当我 运行 容器时,我通过 运行ning:
进入
>docker exec -it -u root jenkins sh
>docker
>sh: docker: Permission denied
并且不让我做任何其他事情。我也无法在管道中构建图像。
我阅读了在 google 中找到的所有内容,但没有任何帮助。一些指南说创建将 jenkins 用户添加到 docker 组,但这对我没有帮助,因为我在容器中 运行ning jenkins。
我暴露了地址tcp://0.0.0.0:2375
,没用
我用“alpine/socat”创建了一个中间容器,但它也没有用。
如何在 WSL 中对 jenkins 容器内的 运行 docker 命令执行操作?
谢谢。
最后,我在这个link中找到了解决方案:https://github.com/docker/for-win/issues/1480#issuecomment-355671606
对于那些来寻找相同问题的解决方案的人,您只需安装 docker 客户端就可以了。
curl -sSL https://download.docker.com/linux/static/stable/x86_64/docker-17.09.1-ce.tgz | sudo tar -C /usr/local/bin -xz --strip=1 docker/docker
在我的例子中,没有必要设置 export DOCKER_HOST=tcp://localhost:2375
因为 Docker Desktop 已经公开了那个端口。如果我加了,报错Cannot connect to the Docker daemon at tcp://localhost: 2375. Is the docker daemon running?
,所以没放
我在我的 Windows 10 笔记本上安装了 Docker Desktop,使用的是 debian 发行版。我遇到的问题是当我想 运行 docker 在带有 jenkins 的容器中时。
我用 docker-compose 创建了 jenkins 容器:
version: '2.4'
services:
jenkins:
image: jenkins/jenkins
user: root
privileged: true
container_name: jenkins
restart: unless-stopped
ports:
- 8080:8080
- 8443:8443
- 50000:50000
group_add:
- 1000
volumes:
- jenkins_home:/var/jenkins_home
- /c/Users/user/.docker/config.json:/root/.docker/config.json:ro
- /c/Users/user/.docker/machine/certs:/root/.docker:ro
- /var/run/docker.sock:/var/run/docker.sock
- /usr/local/bin/docker:/usr/bin/docker
environment:
- JENKINS_OPTS="--prefix=/jenkins"
当我 运行 容器时,我通过 运行ning:
进入>docker exec -it -u root jenkins sh
>docker
>sh: docker: Permission denied
并且不让我做任何其他事情。我也无法在管道中构建图像。
我阅读了在 google 中找到的所有内容,但没有任何帮助。一些指南说创建将 jenkins 用户添加到 docker 组,但这对我没有帮助,因为我在容器中 运行ning jenkins。
我暴露了地址tcp://0.0.0.0:2375
,没用
我用“alpine/socat”创建了一个中间容器,但它也没有用。
如何在 WSL 中对 jenkins 容器内的 运行 docker 命令执行操作?
谢谢。
最后,我在这个link中找到了解决方案:https://github.com/docker/for-win/issues/1480#issuecomment-355671606
对于那些来寻找相同问题的解决方案的人,您只需安装 docker 客户端就可以了。
curl -sSL https://download.docker.com/linux/static/stable/x86_64/docker-17.09.1-ce.tgz | sudo tar -C /usr/local/bin -xz --strip=1 docker/docker
在我的例子中,没有必要设置 export DOCKER_HOST=tcp://localhost:2375
因为 Docker Desktop 已经公开了那个端口。如果我加了,报错Cannot connect to the Docker daemon at tcp://localhost: 2375. Is the docker daemon running?
,所以没放