前回の質問があります(Docker 不明フラグ --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
プライベート SSH 認証情報を公開せずに Docker イメージをビルドしたいのですが、これがサポートされている方法のようです。この問題の原因について何か考えはありますか?
ベストアンサー1
要約
Dockerファイル
# syntax=docker/dockerfile:experimental
FROM continuumio/miniconda3
RUN --mount=type=ssh pip install git+ssh://[email protected]/myrepo/myproject.git@develop
RUN conda install numpy
...
注記:最初の行のコメントは必要なブードゥー
次に、次のコマンドで Docker イメージをビルドします。
DOCKER_BUILDKIT=1 docker build --ssh default -t my_image .
これにより、--mount
オプションRUN
Dockerfile 内のディレクティブ用。
長い答え
ドキュメントに記載されている通りここ、SSH転送dockerイメージのビルドは、ビルドキットバックエンド:
外部実装機能
この機能は、ビルドキットバックエンド。
Dockerビルドは、キャッシュマウント、ビルドシークレット、SSH転送などの実験的な機能をサポートしています。これらは、構文ディレクティブを使用してビルダーの外部実装を使用することで有効になります。これらの機能について詳しくは、BuildKitリポジトリのドキュメントを参照してください。
これにはドッカー 18.09(またはそれ以降)docker build
で、コマンドをDOCKER_BUILDKIT=1
環境変数を設定し、Dockerファイルを次のように起動します。魔法のコメント: # syntax=docker/dockerfile:experimental
.
また、以下の編集や追加も可能です/etc/docker/daemon.json
:
{
"experimental" : false,
"debug" : true,
"features": {
"buildkit" : true
}
}