本日、Docker Toolbox for Windows 10 64bitをダウンロードしました。チュートリアルを進めます。 Dockerfileを使って画像を作成しようとすると、次のようなエラーメッセージが表示されます。
ステップ:
docker build -t docker-whale .
Error: $ docker build -t docker-whale .
unable to prepare context: unable to evaluate symlinks in Dockerfile path: GetFileAttributesEx C:\Users\Villanueva\Test\testdocker\Dockerfile: The system cannot find the file specified.
ところで:いくつかのオプションを試してみました@ https://github.com/docker/docker/issues/14339
$ docker info
Containers: 4
Running: 0
Paused: 0
Stopped: 4
Images: 2
Server Version: 1.10.1
Storage Driver: aufs
Root Dir: /mnt/sda1/var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 20
Dirperm1 Supported: true
Execution Driver: native-0.2
Logging Driver: json-file
Plugins:
Volume: local
Network: bridge null Host
Kernel Version: 4.1.17-boot2docker
Operating System: Boot2Docker 1.10.1 (TCL 6.4.1); master : b03e158 - Thu Feb 11 22:34:01 UTC 2016
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 996.2 MiB
Name: default
ID: C7DS:CIAJ:FTSN:PCGD:ZW25:MQNG:H3HK:KRJL:G6FC:VPRW:SEWW:KP7B
Debug mode (server): true
File Descriptors: 32
Goroutines: 44
System Time: 2016-02-19T17:37:37.706076803Z
EventsListeners: 0
Init SHA1:
Init Path: /usr/local/bin/docker
Docker Root Dir: /mnt/sda1/var/lib/docker
Labels:
provider=virtualbox
次のコマンドを実行中
"docker build -t docker-whale ."
dockerfileが現在の作業ディレクトリにあることを確認してください。
もしあなたがWindows 8で作業しているなら、Dockerツールボックスを使うでしょう。 Dockerfileはテキストファイルなので、mydockerbuildディレクトリから以下のコマンドを実行します。
docker build -t docker-whale -f ./Dockerfile.txt .
Dockerfileから拡張子.txtを削除してコマンドを実行するだけです。
docker build -t image-name
それは確かにうまくいくでしょう。
私は自分のファイルをDockerfile(大文字)の代わりにdockerfileと名付けました。そしてそれを変更すると、それは私の "Dockerfile"の処理を開始しました。
ファイルの名前は.Dockerfile
ではなくDockerfile
であるべきです。 ファイルに拡張子を付けないでください
正しいコマンドを使って画像を作成したにもかかわらず、このエラーが出ました(MacBookの場合)。
docker build -t testimg .
後でその経路が問題であることがわかりました。 dockerファイルを含む正しいパスに移動するだけです。現在の作業ディレクトリを再確認してください。パニックに陥ることはありません。
VS2017 Docker SupportツールでDockerFileを作成しましたが、同じエラーが発生しました。しばらくして、私はDockerfile (~\source\repos\DockerWebApplication\)
を含む正しいディレクトリにいないことに気づきました。プロジェクト内の正しいファイル(~/source/repos/DockerWebApplication/DockerWebApplication)
にcdし、dockerイメージを作成しました。
WSLでは、パス変換に問題があるようです。 UbuntuでのDockerfileの場所(私はdockerを実行していてDockerfileが存在している場所)は "/ home/sxw455/App1"ですが、どちらのコマンドも機能しませんでした。
$ pwd
/home/sxw455/App1
$ ll
total 4
drwxrwxrwx 0 sxw455 sxw455 4096 Dec 11 19:28 ./
drwxr-xr-x 0 sxw455 sxw455 4096 Dec 11 19:25 ../
-rwxrwxrwx 1 sxw455 sxw455 531 Dec 11 19:26 Dockerfile*
-rwxrwxrwx 1 sxw455 sxw455 666 Dec 11 19:28 app.py*
-rwxrwxrwx 1 sxw455 sxw455 12 Dec 11 19:27 requirements.txt*
$ docker build -t friendlyhello .
unable to prepare context: unable to evaluate symlinks in Dockerfile path: GetFileAttributesEx C:\Windows\System32\Dockerfile: The system cannot find the file specified.
$ docker build -t friendlyhello "/home/sxw455/App1"
unable to prepare context: path "/home/sxw455/App1" not found
しかし、Windowsでは、実際のパスは次のとおりです。
C:\Users\sxw455\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs\home\sxw455\App1
だから私はこれをしなければならなかった(たとえ私がbashからそれを走らせたとしても):
$ docker build -t friendlyhello
"C:\Users\sxw455\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs\home\sxw455\App1"
Sending build context to Docker daemon 5.12kB
Step 1/7 : FROM python:2.7-slim
---> 0dc3d8d47241
Step 2/7 : WORKDIR /app
---> Using cache
---> f739aa02ce04
Step 3/7 : COPY . /app
---> Using cache
---> 88686c524ae9
Step 4/7 : RUN pip install --trusted-Host pypi.python.org -r requirements.txt
---> Using cache
---> b95f02b14f78
Step 5/7 : EXPOSE 80
---> Using cache
---> 0924dbc3f695
Step 6/7 : ENV NAME World
---> Using cache
---> 85c145785b87
Step 7/7 : CMD ["python", "app.py"]
---> Using cache
---> c2e43b7f0d4a
Successfully built c2e43b7f0d4a
Successfully tagged friendlyhello:latest
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker Host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.
初期インストール時に環境変数にも同様の問題があり、WSLが完全には実装されていないため、Ubuntu DockerCEをインストールするのではなく、Windows DockerCEをインストールして環境変数をハックするというアドバイスに従いましたsystemctl。 Windows Docker CEのインストールが完了し、環境変数が設定されると、dockerはWSL/Ubuntuの下で正常に動作します。
それは、メモ帳がDockerfileの最後に ".txt"を追加するからです。
私はもともと私のDockerfileをPowerShellで作成していましたが、ファイルの拡張子がPSファイルタイプとして表示されていませんでしたが…Notepad ++からファイルを作成すると、必ず「すべてのタイプ(。) "ファイル名に拡張子を付けないファイルタイプ(Dockerfile)。これで私のイメージ構築コマンドを正常に完了できました。Dockerfileのタイプが" File "であることを確認してください...
問題は、ファイル名はDockerfileであるべきで、DockerFileやdockerfileではないということです。
Windows 10では...ピリオドが最初のパラメータです
docker build . -t docker-whale
Dockerfileをビルドするには、自動化されたコンテンツをDockerfileに保存します。 Dockerfileではありません。ファイルを開くときに、
$ notepad Dockerfile
(テキストファイルが書かれているのでファイルはビルドできません)
ファイルをビルドするには
$ notepad Dockerfile
そして今実行します。
$ docker build -t docker-whale .
Dockerfileの現在のディレクトリにいることを確認してください。
ファイル名 "Dockerfile"が拡張子を付けて保存されていないことを確認してください。拡張子を付けずにファイルを作成するだけです。
そして、Dockerfileがdockerイメージを構築しようとしているのと同じディレクトリにあることを確認してください。
私の場合(Windows 10から実行)
1)ファイルmyDockerFile.Dockerfile
の名前をDockerfile
に変更します( なし ファイル拡張子)。
次に、このコマンドをフォルダーの外側で from を実行します。
docker build .\Docker-LocalNifi\
これは私のために、そして仕事の中で私の同僚のために働いています、あなたにとっても役立つことを願っています
最も重要なことに、あなたが別の名前を使ってもうまくいかない場合は、あなたのファイル名がDockerfile
であることを確認してください(少なくとも私にとってはうまくいきませんでした)。
Dockerfileと同じディレクトリにいる場合は、.
、つまりdocker build -t Myubuntu1:v1 .
を使用するか、絶対パス、つまりdocker build -t Myubuntu1:v1 /Users/<username>/Desktop/Docker
を使用します。
この問題はDockerFileの作成手順に関連しています。
機能するには、cmdを開き、目的のディレクトリに移動して次のように入力します。
abc>DockerFile
これにより、フォルダ内にDockerFileというファイルが作成されます。
今タイプしなさい:
notepad DockerFile
これにより、メモ帳でDockerFileファイルが開き、提供されている標準コードをコピーして貼り付ける必要があります。
ファイルを保存して、最後に、Dockerを使って画像を作成します。
docker build -t docker-whale .
これは私のために働いていると私はそれが他の人を助けることを願っています
私が働いていたパスがJunctionディレクトリの下にあったとき、私はWindowsでこれを得ました。だから私の解決策はそのパスの下で動作しないことでした。
以下のコマンドは私のために働いたdocker build -t docker-whale -f Dockerfile.txt。
Macでは以下のコマンドで動作します。 (あなたの.Dockerfile
があなたのルートディレクトリにあることを願います)。
docker build -t docker-whale -f .Dockerfile .
エラーメッセージは誤解を招くものです。問題はシンボリックリンクとはまったく関係ありません。通常、dockerはビルドを説明するDockerfileを見つけられないだけです。
典型的な理由は次のとおりです。
Dockerfile
と呼ばれる必要があります。たとえば、dockerfile
、.Dockerfile
、Dockerfile.txt
、またはその他の名前で呼び出された場合、見つかりません。docker build contextdir
と言う場合、Dockerfileはcontextdir/Dockerfile
になければなりません。代わりにDockerfile
などがある場合、見つかりません。この1つのエラーメッセージが曖昧でわかりにくいだけではありません。私は通常、ドッカーの概念の一部とドキュメントの多くが意味的に不正確であると感じています。
本当に悪い点の1つは、 「タグ」の概念 (2019年8月現在)です。ドキュメントのどこを見るかに応じて、次のすべてのことを言っています(多かれ少なかれ明確に):
tag
コマンドがありますが、指定する引数はタグまたはタグ名ではなく、イメージ名と呼ばれます。tag
コマンド引数では、タグ名はオプションですが、イメージ名は必須です。明らか。docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
x
を持つイメージ(またはその前、しかし何らかの方法で常に魔法に固執している)は、そのホストx
(レジストリ内)に存在することになっています。そのようなイメージにアクセスしたい場合は、多かれ少なかれ、ホストプレフィックスx
でこの名前を使用する必要があります。x
だけでなく、どのホストでも使用できます。これは、イメージをx
に「プッシュ」することは別個の操作であるためです。これに混乱している場合、それはnotのせいです。
暴言の終わり。