このようなDockerfileを作成しました
FROM ubuntu:12.04
RUN apt-get update
RUN apt-get install -y wget
これで、ホストマシンにabc.txt
というファイルが作成されました。このコンテナにコピーする方法を教えてください。ホストからコンテナにコピーするDockerfileに追加できるステップはありますか?.
次のようなCOPYコマンドを使用します。
COPY foo.txt /data/foo.txt
# where foo.txt is the relative path on Host
# and /data/foo.txt is the absolute path in the image
cOPYの詳細を 公式ドキュメント で読む
代わりにADDを使用することもできますが、tar.gzファイルの解凍など、ADDの高度な機能を使用したくない場合、これはベストプラクティスではありません。ADDコマンドを使用する場合は、次のようにします。
ADD abc.txt /data/abc.txt
# where abc.txt is the relative path on Host
# and /data/abc.txt is the absolute path in the image
公式ドキュメント でADDの詳細を読む
この(ひどく不明瞭な)エラーが発生した場合:
コピーに失敗しました:stat /var/lib/docker/tmp/docker-builderXXXXXXX/abc.txt:no such file or directory
次のような多くの理由が考えられます。
context
がDockerfileのコンテキストを上書きすることに注意してください。 COPYステートメントは、Dockerfileの相対パスではなく、docker-compose.ymlで定義されているパスをナビゲートする必要があります。COPY abc.txt /app #This won't work
.dockerignore
または.gitignore
ファイルによって無視されるディレクトリにあります(ワイルドカードには注意してください)WORKDIR /abc
に続いてCOPY . xyz/
が機能する場合は、COPY /abc xyz/
が失敗する場合もありますが、少しいです。
この問題に直面しましたが、zeppelin [1GB]ディレクトリをdockerコンテナにコピーできず、問題が発生していました
コピーに失敗しました:stat /var/lib/docker/tmp/docker-builder977188321/zeppelin-0.7.2-bin-all:そのようなファイルまたはディレクトリはありません
Dockerバージョン:17.09.0-ceを使用していますが、次の手順で問題を解決しました。
ステップ1:zeppelinディレクトリ[これをdockerパッケージにコピーしたい]を「Dockfile」を含むディレクトリにコピーします
ステップ2:Dockfileを編集し、コマンド[コピーする場所] ADD ./zeppelin-0.7.2-bin-all/usr/local /を追加します
ステップ3:DockFileを含むディレクトリに移動し、コマンドを実行します[代替も利用可能] docker build
手順4:ログで正常に作成されたドッカーイメージ
ステップ5/9:./zeppelin-0.7.2-bin-all/usr/local/---> 3691c902d9feを追加
ステップ6/9:WORKDIR $ ZEPPELIN_HOME ---> 3adacfb024d8 ....正常にビルドされたb67b9ea09f02