首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以非根用户的身份在高山容器中运行?

如何以非根用户的身份在高山容器中运行?
EN

Stack Overflow用户
提问于 2022-09-16 18:20:16
回答 1查看 153关注 0票数 1

正如标题所述,我试图在高寒容器上以非根用户的身份运行docker compose

我有下面的Dockerfile

代码语言:javascript
复制
FROM docker.io/jenkins/ssh-agent:4.4.0-alpine-jdk17

# SSH public key
ENV JENKINS_AGENT_SSH_PUBKEY "ssh-key"

# Install Docker CLI
RUN apk add --no-cache docker-cli docker-cli-compose

# Add docker permissions to Jenkins user
COPY docker-perms.sh /docker-perms.sh
RUN delgroup ping && sh /docker-perms.sh

# I have to delete ping group as it has the same GID as docker

docker-perms.sh

代码语言:javascript
复制
#!/bin/sh
set -e
DOCKER_SOCKET=/var/run/docker.sock
RUNUSER=jenkins

if [ -S ${DOCKER_SOCKET} ]; then
    DOCKER_GID=$(stat -c '%g' ${DOCKER_SOCKET})
    DOCKER_GROUP=$(getent group ${DOCKER_GID} | awk -F ":" '{ print $1 }')
    if [ $DOCKER_GROUP ]
    then
        addgroup $RUNUSER $DOCKER_GROUP
    else
        addgroup -S -g ${DOCKER_GID} docker
        addgroup $RUNUSER docker
    fi
fi

然后在启动容器时挂载主机的对接套接字。然而,有两件事发生:

  1. ,我必须在容器中以根用户身份重新运行docker-perms.sh,因为运行docker ps作为jenkins用户返回permission denied错误。运行脚本后,它将不再生成错误

当我从Jenkins控制器运行一个作业时,

  1. 会再次出现permission denied错误,不管怎么说,

我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2022-09-17 18:11:39

我想出了我做错了什么:docker.sock只有在映像生成之后才被挂载,所以脚本不能添加组。

这不是一个很好的解决方法,但我想我可以直接在Dockerfile中添加这个组:

代码语言:javascript
复制
FROM docker.io/jenkins/ssh-agent:4.4.0-alpine-jdk17

# SSH public key
ENV JENKINS_AGENT_SSH_PUBKEY "ssh-key"

# Install Docker CLI
RUN apk add --no-cache docker-cli docker-cli-compose

# Add Docker permissions to Jenkins user
RUN DOCKER_GID=999 && \
    delgroup $(grep $DOCKER_GID /etc/group | cut -d: -f1) && \
    addgroup -S -g $DOCKER_GID docker && addgroup jenkins docker

这假设码头组ID为999。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73748878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档