首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在docker容器中使用本地文件

在docker容器中使用本地文件
EN

Stack Overflow用户
提问于 2020-02-28 13:45:27
回答 1查看 26关注 0票数 0

我正在为我的go应用程序编写一个dockerfile。在这里,我需要一个文件,它位于我的本地机器上的/home/saivamsi/.kube/config中。如果我直接在代码中使用它,它会显示一个错误,即找不到文件或目录。因此,我开始使用卷,但我不知道哪里出了问题,我无法在我的代码中使用该文件。

代码语言:javascript
复制
FROM golang:1.14.0

ENV HOMEABC=/home/saivamsi

WORKDIR  /go/src/bifrost

VOLUME  src="${HOMEABC}/.kube/config",target="/go/src/bifrost/config"

COPY --chown=bbadmin:bbadmin . /go/src/bifrost

COPY go.mod go.sum ./

RUN go mod download

RUN go build -o main .

#EXPOSE 8001

CMD ["./main"]
# CMD ["tail", "-f", "/dev/null"]
EN

回答 1

Stack Overflow用户

发布于 2020-02-28 15:09:22

Dockerfile文件中VOLUME指令的使用不正确。Dockerfile reference for VOLUME声明:

主机目录是在容器运行时声明的:主机目录(挂载点)本质上依赖于主机。这是为了保持镜像的可移植性,因为给定的主机目录不能保证在所有主机上都可用。因此,您不能从Dockerfile中挂载主机目录。VOLUME指令不支持指定host-dir参数。您必须在创建或运行容器时指定装入点。

要在运行时将主机上的$HOME/.kube目录挂载到容器,可以在docker run命令中指定--volume-v

例如,您应该首先从Dockerfile文件中删除VOLUME指令。然后,您将运行类似于以下内容的代码:

代码语言:javascript
复制
docker run --volume $HOME/.kube:/go/src/bifrost <image name>

这会将主机上的$HOME/.kube目录挂载到正在运行的容器中的/go/src/bifrost目录。然后,配置文件将在运行时出现在/go/src/bifrost/config中。

注意:仅当kube配置文件存在于运行容器的主机上时,此解决方案才有效。要将配置文件包含在镜像本身中,它必须存在于Docker构建上下文中。

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

https://stackoverflow.com/questions/60445901

复制
相关文章

相似问题

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