我想在主机上使用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服务本身包括一个用于var/run/docker的挂载。袜子
docker service inspect的输出:
"Mounts": [
{
"Type": "bind",
"Source": "/var/run/docker.sock",
"Target": "/var/run/docker.sock"
}
],
我尝试过的事情:
>
触摸/var/run/docker。在生成器上单击并复制--chown=nobody:nobody--from=builder/var/run/var/run
不同的用户(我拒绝以root身份运行。这是一种糟糕的做法)。
将final中的nobody添加到docker组。
编辑:
在这种配置下,我得到以下错误,因为任何人作为用户都没有访问/var/run/docker的权限。插座
尝试连接到位于的Docker守护程序套接字时,权限被拒绝unix:///var/run/docker.sock:收到http:///var/run/docker.sock/v1.25/services:拨打unix/var/run/docker。sock:连接:权限被拒绝
要与docker守护程序通信,您需要以root(或sudo)身份运行命令,或者您的用户必须是docker组的成员。
为了从非root用户(无sudo)使用它,您需要在容器内创建docker组,并将您的用户添加到该组中。注意:容器中的docker组必须与主机上的实际docker组具有相同的GID。
我正在将当前的Jenkins服务器转换为实现Docker。按照github https://github.com/jenkinsci/docker上的指南,我成功地使用以下命令启动了jenkins: docker Run-P 8080:8080-P 50000:50000-V Jenkins_Home://var/Jenkins_Home Jenkins/Jenkins:LTS 我不确定如何通过文
问题内容: 我有一个运行詹金斯的码头集装箱。作为构建过程的一部分,我需要访问在主机上本地运行的Web服务器。是否可以将主机Web服务器(可以配置为在端口上运行)暴露给jenkins容器? 编辑:我正在Linux机器上本地运行docker。 更新: 除了下面的@larsks答案之外,要从主机获取主机IP的IP地址,我还要执行以下操作: 问题答案: 在Linux上本地运行Docker时,您可以使用接口
我有一个docker容器在运行Jenkins。作为构建过程的一部分,我需要访问在主机上本地运行的web服务器。有没有一种方法可以将主机web服务器(可以配置为在端口上运行)公开给jenkins容器? 编辑:我正在Linux机器上原生运行docker。 更新: 除了@larsks下面的答案之外,要从主机获取主机IP的IP地址,我还做了以下操作:
问题内容: 我基于两个不同的图像创建了两个docker容器。一个数据库,另一个用于网络服务器。这两个容器都在我的Mac OS X上运行。 我可以从主机访问数据库容器,也可以从主机访问Web服务器。 但是,如何从Web服务器访问数据库连接? 我启动数据库容器的方式是 我开始了wls容器作为 我可以通过连接到主机上的数据库 我可以以以下方式访问主机上的wls: 问题答案: 最简单的方法是使用–link
我基于两个不同的映像创建了两个docker容器。一个是db,另一个是WebServer。这两个容器都在我的mac OSX上运行。 我可以从主机访问db容器,也可以从主机访问webserver。 我可以访问主机上的wls作为
问题内容: 我正在尝试为将我的应用程序容器连接到postgres容器提供一个便携式解决方案。“便携式”是指我可以给用户两个命令,每个容器一个,它们将始终协同工作。 我的本地PC上运行着一个postgres docker容器,我这样运行它, 我可以使用address从python flask应用程序访问它。 我也将python应用程序也放置在docker容器中,但无法连接到postgres容器。 地