PMe*_*nde 14 docker dockerfile
先前有一个问题(Docker Unknown标志--mount)面临着相同的错误,该错误是由于运行了最新版本的Docker所致。我正在运行最新版本的Docker。
我有以下内容Dockerfile
:
FROM continuumio/miniconda3
RUN --mount=type=ssh pip install git+ssh://git@github.com/myrepo/myproject.git@develop
RUN conda install numpy
...
Run Code Online (Sandbox Code Playgroud)
根据文档,我应该能够简单地运行docker build --ssh default .
。但是,我收到以下错误:
Sending build context to Docker daemon 2.048kB
Error response from daemon: Dockerfile parse error line 3: Unknown flag: mount
Run Code Online (Sandbox Code Playgroud)
输出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
Run Code Online (Sandbox Code Playgroud)
我想构建一个Docker映像而不暴露我的私有SSH凭据,这似乎是受支持的方法。是否有人对导致问题的原因有任何想法?
Tho*_*eil 17
Docker文件
# syntax=docker/dockerfile:experimental
FROM continuumio/miniconda3
RUN --mount=type=ssh pip install git+ssh://git@github.com/myrepo/myproject.git@develop
RUN conda install numpy
...
Run Code Online (Sandbox Code Playgroud)
然后使用以下命令构建您的docker映像:
# syntax=docker/dockerfile:experimental
FROM continuumio/miniconda3
RUN --mount=type=ssh pip install git+ssh://git@github.com/myrepo/myproject.git@develop
RUN conda install numpy
...
Run Code Online (Sandbox Code Playgroud)
有了这个,你就可以使用--mount
选项为RUN
您Dockerfile指令。
由于文档中找到这里,ssh的转发建筑搬运工图像时使用的时候才启用BuildKit后端:
外部实施功能
仅当使用BuildKit 后端时,此功能才可用 。
Docker build supports experimental features like cache mounts, build secrets and ssh forwarding that are enabled by using an external implementation of the builder with a syntax directive. To learn about these features, refer to the documentation in BuildKit repository.
For this you need Docker 18.09 (or later) and you also need to run the docker build
command with the DOCKER_BUILDKIT=1
environment variable and start your Docker file with the following magic comment: # syntax=docker/dockerfile:experimental
.
XDS*_*XDS 10
对于可能遇到此类错误的任何人:确保文件的第一行是“#syntax=docker/dockerfile:experimental”。这将起作用:
# syntax=docker/dockerfile:experimental
FROM golang:1.14.1 as builder
...
RUN --mount=type=ssh GOSUMDB=off go get -d -v ./...
Run Code Online (Sandbox Code Playgroud)
但是如果您在文件开头添加注释,如下所示:
# SOME SILLY COMMENT HERE <--- this ostensibly innocent comment ruins everything!
# syntax=docker/dockerfile:experimental
FROM golang:1.14.1 as builder
...
RUN --mount=type=ssh GOSUMDB=off go get -d -v ./...
Run Code Online (Sandbox Code Playgroud)
那么 'syntax=...' 将不会被考虑,因为它不再位于第一行。这就是为什么您会收到下面关于“安装”的奇怪错误!嘎!
希望这能挽救一些人的生命几个小时。
如果您使用的sudo
是 docker 命令,您可能需要:
sudo DOCKER_BUILDKIT=1 ...
您由于--mount
在 .txt 文件中写入而收到的错误消息Dockerfile
。您必须首先启用 Docker BuildKit 才能使用此语法。
您可以通过此处检查所有当前可用的构建选项
归档时间: |
|
查看次数: |
4823 次 |
最近记录: |