我想在主机上使用Docker套接字,从Go代码运行在一个基于scratch的容器中。
Dockerfile如下所示:
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
的输出
"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守护程序套接字时被拒绝权限
发布于 2019-05-31 05:18:34
要与docker守护进程通信,您需要以root (或sudo)身份运行命令,或者您的用户必须是docker组的成员。
为了在非根用户和没有sudo的情况下使用它,您需要在容器中创建docker组,并将您的用户添加到该组中。注意: docker group inside容器必须与主机上的实际docker组具有相同的GID。
https://stackoverflow.com/questions/56383271
复制相似问题