使用jenkins官方图片,我安装了docker和docker compose,并将jenkins添加到docker组(容器中的GID 999)。
之后,我共享了主机的 /var/run/docker.sock,以便启用jenkins创建“兄弟姐妹”容器。碰巧原始文件具有GID 134,并且安装了此GID。我收到以下错误:
demo_1|docker:在unix://var/run/docker.sock尝试连接到Docker守护程序套接字时权限被拒绝:Post超文本传输协议:///var/run/docker.sock/v1.32/containers/create:拨号unix /var/run/docker.sock: connect:权限被拒绝。demo_1|请参阅'docker run--help'。
知道怎么解决这个问题吗?
我最小的(尚未优化的)Dockerfile是:
FROM jenkins/jenkins:lts
USER root
RUN apt-get update && apt-get install -y apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common
RUN curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg | apt-key add -
RUN apt-key fingerprint 0EBFCD88
RUN add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
$(lsb_release -cs) \
stable"
RUN apt-get update
RUN apt-get install -y docker-ce docker-compose
RUN usermod -aG docker jenkins
USER jenkins
RUN newgrp docker
我还创建了一个docker compose来测试它:
version: '2'
services:
demo:
build: .
ports:
- 8080:8080
- 50000:50000
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: >
/bin/sh -c "
set -e
groups
docker -v
docker-compose -v
ls -ln /var/run/docker.sock
id jenkins
docker run hello-world
"
输出为:
demo_1 | jenkins staff docker
demo_1 | Docker version 17.09.0-ce, build afdb6d4
demo_1 | docker-compose version 1.8.0, build unknown
demo_1 | srw-rw---- 1 0 134 0 Sep 30 07:36 /var/run/docker.sock
demo_1 | uid=1000(jenkins) gid=1000(jenkins) groups=1000(jenkins),50(staff),999(docker)
demo_1 | docker: 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.32/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
demo_1 | See 'docker run --help'.
您可以在dockerfile中创建与docker具有相同组id的组https://stackoverflow.com/a/71085404/4791684
我给了这个问题一个肮脏的修正,所以我把这个问题放在一边,看看是否会出现更好的问题。
由于 /var/run/docker.sock文件归root所有,具有相同的UID,我将jenkins添加到sudoers列表中,无需输入密码:
RUN adduser jenkins sudo
RUN echo "jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers
这就解决了问题。我不喜欢它,但它很管用。
我正在尝试构建然后在Jenkins上运行docker映像。我在AWS ec2服务器上的ubuntu上设置了Jenkins。当我尝试构建时,我会收到这个错误: 为了便于参考,我还附上了我的詹金斯档案。 我正在使用Jenkins的默认管理员帐户。 我还将Jenkins用户添加到docker组。但这并没有解决问题。我还通过运行以下程序验证了这一点: 其输出: 如果你需要任何进一步的信息,请告诉我。
我是新来的docker我刚刚尝试使用docker在我的本地机器(Ubuntu 16.04)与Jenkins。 我用下面的管道脚本配置了一个新作业。 但它以以下错误失败。
我刚刚运行Dockerfile在jenkins安装然后我得到以下错误: 尝试连接到处的Docker守护程序套接字时,权限被拒绝unix:///var/run/docker.sock:邮递http:///var/run/docker.sock/v1.40/build?buildargs={}
用例: Base Instance有一个Ubuntus 16.04安装的Docker,它可以找到并检查docker映像。 部署了Jenkins Docker容器的实例。 此Jenkins实例将在容器中装载主机的Docker套接字。如文中所述。 现在他在Jenkins容器上安装了docker二进制文件。 运行Jenkins conatiner的Docker ps并列出可用的容器。 但是当从Jenki
我有这个: 我是这样建造的: 最后通过这样运行: 这会将我正确地记录到docker容器中,但当我想查看图像时 或者试着拉图像 我得到这个错误: 尝试连接到处的Docker守护程序套接字时,权限被拒绝unix:///var/run/docker.sock:收到http:///var/run/docker.sock/v1.38/images/json:拨unix/var/run/docker。sock
每次我运行泊坞站,我都会得到这个错误。无法连接到 unix:///var/run/docker.sock 的 Docker 守护程序。泊坞窗守护程序是否正在运行? 感谢您的帮助。