首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何授予基于临时访问/var/run/docker.sock的docker容器

如何授予基于临时访问/var/run/docker.sock的docker容器
EN

Stack Overflow用户
提问于 2019-05-31 01:52:55
回答 1查看 932关注 0票数 0

我想在主机上使用Docker套接字,从Go代码运行在一个基于scratch的容器中。

Dockerfile如下所示:

代码语言:javascript
复制
    FROM golang:1.12.4-alpine3.9 as builder

    RUN mkdir /user && \
        echo 'nobody:x:65534:65534:nobody:/:' > /user/passwd && \
        echo 'nobody:x:65534:' > /user/group

    RUN apk add --no-cache ca-certificates git

    WORKDIR /src

    COPY go.mod ./
    RUN go mod download

    COPY . .
    RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .

    FROM scratch as final

    COPY --from=builder /user/group /user/passwd /etc/
    COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
    COPY --from=builder /src/app /app
    COPY --chown=nobody:nobody data /.local

    USER nobody:nobody

    ENTRYPOINT ["/app"]

来自docker service inspect的输出

代码语言:javascript
复制
  "Mounts": [
        {
            "Type": "bind",
            "Source": "/var/run/docker.sock",
            "Target": "/var/run/docker.sock"
        }
    ],

我尝试过的东西:

编辑:

在此配置下,我得到以下错误,因为作为用户的没有权限访问/var//docker.socket

在尝试连接到位于unix : /var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.25/services:拨号unix/var/run/docker.sock: connect:权限被拒绝的Docker守护程序套接字时被拒绝权限

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-31 05:18:34

要与docker守护进程通信,您需要以root (或sudo)身份运行命令,或者您的用户必须是docker组的成员。

为了在非根用户和没有sudo的情况下使用它,您需要在容器中创建docker组,并将您的用户添加到该组中。注意: docker group inside容器必须与主机上的实际docker组具有相同的GID。

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

https://stackoverflow.com/questions/56383271

复制
相关文章

相似问题

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