Dockerビルドは「コンテキストを準備できません:コンテキストはディレクトリである必要があります:/ Users / tempUser / git / docker / Dockerfile」を提供します


98

私はイメージDockerfileを構築することになっているを持っていUbuntuます。しかし、私が走るときはいつでも

docker build -t ubuntu-test:latest ./Dockerfile

コンソールに次のエラーが表示されます

コンテキストを準備できません:コンテキストはディレクトリである必要があります:/ Users / tempUser / git / docker / Dockerfile

私はMacOsXを使用しています。私もやってみましsudoた。何も機能しません。

回答:


148

代わりに、ディレクトリを指す必要があります。dockerfileを指定しないでください。

docker build -t ubuntu-test:latest .ない仕事を

docker build -t ubuntu-test:latest ./Dockerfile動作しませ


なんでこんな感じ?ファイル自体を簡単に指すことができるのに、dirを指す必要があるのは奇妙に思えます
MonicaHeddneck20年

75

-fオプションでdockerbuildを実行することもできます

docker build -t ubuntu-test:latest -f Dockerfile.custom .


1
これは私のために働いた。私の場合はDockerfile名でしたDockerfile-ABCD私は火に持っていたので:docker build -t my-custom-name -f /path_to_my_docker_file/Dockerfile-abcd .
niranjan harpale

17

Dockerfilewhenビルドを指定するには、次を使用できます。

docker build -t ubuntu-test:latest - < /path/to/your/Dockerfile

あるかどうしかし、それは失敗するでしょうADDCOPY相対パスに依存してコマンド。contextforを指定する方法はたくさんあります。詳細については、dockerbuildのドキュメントをdocker build参照してください。


ubuntu 12.04でこれを行いました:Dockerfiledocker build -t ubuntu:12.04 - < Dockerfileのルートにいる必要があります
Dominic Motuka 2017年

16

コンテキストを理解する

docker buildコマンド

dockerのビルドコマンドの基本的な構文は次のとおりです。

docker build -t imagename:imagetag context_dir

コンテキスト

コンテキストはディレクトリであり、dockerビルドプロセスが表示する内容を決定します。Dockerfileの観点からはcontext_dir/mydir/myfile、ファイルシステム内のすべてのファイルが/mydir/myfileDockerfile内になり、ビルドプロセス中になります。

dockerfile

dockerfileが呼び出さDockerfileれてコンテキスト内に存在する場合、命名規則によって暗黙的に検出されます。これは、通常、Dockerfileを任意のDockerコンテナーですぐに見つけることができることを意味するので便利です。

「/ tmp / mydockerfile」などの別の名前を使用する場合は、次のように使用できます-f

docker build -t imagename:imagetag -f /tmp/mydockerfile context_dir

ただし、dockerfileは同じフォルダーにないか、少なくとも見つけるのが難しくなります。


2

Dockerビルドが実行されるたびに、dockerがイメージ名を知りたいので、-t:を渡す必要があります。ここで、Dockerfileと同じディレクトリにいることを確認して実行します

docker build -t <image_name>:<version> .docker build -t my_apache:latest .Dockerfileと同じディレクトリにいると仮定した 例 。それ以外の場合は、-fフラグとDockerfileを渡します。

docker build -t my_apache:latest -f ~/Users/documents/myapache/Dockerfile


2番目のコマンドを実行するために、少し変更する必要がありました:(最後docker build -t my_apache:latest -f ~/Users/documents/myapache/Dockerfileにaが追加されていることに注意してください.
Josh

2

私は同じ問題に直面しています。私はを使用していdocker version:17.09.0-ceます。

私は以下の手順に従います:

  1. Dockerfileを作成し、Dockerイメージを作成するためのコマンドを追加しました
  2. Dockfileを作成したディレクトリに移動します
  3. 以下のコマンドを実行します $ sudo docker build -t ubuntu-test:latest .

問題を解決し、画像を正常に作成しました。

注:ビルドコマンドは、Dockerのバージョンと使用しているビルドオプションによって異なります。:)


1

エラーが発生する理由の1つは、ファイル名がDockerfileであることを確認すること でした。 それで、誰かに役立つことを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.