运行 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?,所以没放