Dockerfile
イメージを構築することになっているUbuntu
があります。しかし、私が実行するとき
docker build -t ubuntu-test:latest ./Dockerfile
コンソールに次のエラーが表示されます
コンテキストを準備できません:コンテキストはディレクトリである必要があります:/ Users/tempUser/git/docker/Dockerfile
Mac OsXを使用しています。 Sudo
も試してみました。動作しません。
代わりにdirectoryを指す必要があります。 dockerfileを指定しないでください。
docker build -t ubuntu-test:latest .
はworkを実行します。
docker build -t ubuntu-test:latest ./Dockerfile
は動作しないを実行します。
-f
オプションを使用してdocker buildを実行することもできます
docker build -t ubuntu-test:latest -f Dockerfile.custom .
ビルド時にDockerfile
を指定するには、次を使用できます。
docker build -t ubuntu-test:latest - < /path/to/your/Dockerfile
ただし、相対パスに依存するADD
またはCOPY
コマンドがある場合は失敗します。 docker build
にcontext
を指定する方法は多数あります。詳細については、 dockerビルドのドキュメント を参照してください。
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
docker build
コマンドDockerのビルドコマンドの基本構文は次のとおりです。
docker build -t imagename:imagetag context_dir
コンテキストはディレクトリであり、Dockerビルドプロセスが表示する内容を決定します。Dockerfileの観点から、ファイルシステム内のすべてのファイルcontext_dir/mydir/myfile
はDockerfile内の/mydir/myfile
になり、したがってビルドプロセス中になります。 。
DockerfileがDockerfile
と呼ばれ、コンテキスト内に存在する場合、命名規則により暗黙的に検出されます。これはいいことです。というのは、通常、Dockerコンテナ内のDockerfileをすぐに見つけることができるからです。
「/ tmp/mydockerfile」と言う別の名前を使用する場合、次のように-t
を使用できます。
docker build -t imagename:imagetag -f /tmp/mydockerfile context_dir
しかし、その後dockerfileはコンテナ内にないか、少なくとも見つけるのが難しくなります。
私は同じ問題に直面しています。 docker version:17.09.0-ce
を使用しています。
以下の手順に従います。
$ Sudo docker build -t ubuntu-test:latest .
問題を解決し、イメージを作成しました。
注:ビルドコマンドは、使用しているビルドオプションだけでなく、Dockerバージョンにも依存します。 :)