之前有一个问题(Docker Unknown flag --mount)也遇到了同样的错误,这是由于运行的Docker版本过期。我运行的是最新版本的Docker。
下面是Dockerfile
:
FROM continuumio/miniconda3
RUN --mount=type=ssh pip install git+ssh://[email protected]/myrepo/myproject.git@develop
RUN conda install numpy
...
字符串
根据文档,我应该能够简单地运行docker build --ssh default .
。但是,我收到以下错误:
Sending build context to Docker daemon 2.048kB
Error response from daemon: Dockerfile parse error line 3: Unknown flag: mount
型docker version
的输出:
Client: Docker Engine - Community
Version: 18.09.2
API version: 1.39
Go version: go1.10.8
Git commit: 6247962
Built: Sun Feb 10 04:12:39 2019
OS/Arch: darwin/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.2
API version: 1.39 (minimum version 1.12)
Go version: go1.10.6
Git commit: 6247962
Built: Sun Feb 10 04:13:06 2019
OS/Arch: linux/amd64
Experimental: true
型
我想构建一个Docker镜像而不暴露我的私有SSH凭据,这似乎是支持的方法。有人认为是什么导致了这个问题吗?
6条答案
按热度按时间xjreopfe1#
tl;干
Dockerfile
字符串
然后构建你的docker镜像:
型
这样,你就可以在Dockerfile中为
RUN
指令使用--mount
选项。长回答
如这里的文档所示,构建docker镜像时的 ssh forwarding 仅在使用BuildKit后端时启用:
外部实现功能
此功能仅在使用BuildKit后端时可用。
Docker build支持实验性功能,如缓存挂载,构建秘密和ssh转发,这些功能通过使用带有语法指令的构建器的外部实现来启用。要了解这些功能,请访问refer to the documentation in BuildKit repository。
为此,您需要Docker 18.09(或更高版本),还需要使用**
DOCKER_BUILDKIT=1
环境变量运行docker build
命令,并使用以下magic comment**启动Docker文件:# syntax=docker/dockerfile:experimental
。您也可以编辑
/etc/docker/daemon.json
并添加:型
hec6srdp2#
如果你使用
sudo
作为docker命令,你可能需要:sudo DOCKER_BUILDKIT=1 ...
个ddhy6vgd3#
对于那些可能正在与这种错误作斗争的人:确保文件的第一行是'# syntax=docker/dockerfile:experimental'。这将工作:
字符串
但是如果你在文件的开头添加一个注解,就像这样:
型
那么'syntax=...'将不会被考虑进去,因为它不再在第一行。这就是为什么你会得到下面关于'mount'的奇怪错误!
希望这能从几个人的生命中保存几个小时。
gev0vcfq4#
由于在
Dockerfile
中写入--mount
而导致的错误消息。您必须首先启用Docker BuildKit才能使用此语法。您可以通过here检查所有当前可用的构建选项
vcudknz35#
在本地我只需要DOCKER_BUILDKIT=1 docker build.
在TeamCity构建管道中,我的Docker文件仍然需要魔法行来克服这个问题。我的TeamCity代理运行的是Docker版本19.03.9
2022年,这是我的结论:
1.尝试Docker文件顶部提到的神奇代码行:#syntax=docker/dockerfile:experimental
1.使用BUILD KIT。例如DOCKER_BUILD KIT =1
..在我的上下文中,这都是为了运行下面这行:
运行--mount=type=ssh npm install“git+ssh:// email protected(https://stackoverflow.com/cdn-cgi/l/email-protection):dra_.git”
也许这会为保存一些人节省一些时间。
exdqitrt6#
也许这可以帮助一些人:
我也面临着类似的问题,
第一个月
我用
Docker version 19.03.13, build 4484c46d9d
我刚把这个更新到
docker 20.10.24