2017-07-04 2 views
-1

まず、Docker自体とその構造に関する多くの知識が不足しています。最初に基本を学ぶ方が有益なことは分かっていますが、今のところ他のものに移行するためには、これが必要です。Dockerfileでダウンロードしたファイルをハードドライブに移動

Dockerfile内にwget &をインストールしてウェブサイトからファイルをダウンロードすると、認証&が正常にダウンロードされます。しかし、後でそのファイルを移動しようとすると見つからず、エクスプローラを使っても表示されません(パスが指定されています) RUNと何か関係があると思いました& wgetコマンドの実行方法;私はIdを使ってそれをハードドライブにコピーすることができると読んだが、Dockerfileの中でそれをどうやってやったのだろうか?

RUN wget -P ./path/to/somewhere http://something.com/file.txt --username xyz --password bluh 

ADD ./path/to/somewhere/file.txt /mainDirectory 

ダウンロード&ログインが成功すると示されているが、私はそれがハードドライブ上に位置するではありませんと後でそのファイルを使用してトラブルを抱えています述べたように。おそらく基本的なエラーですが、私は本当に解決策につながるかもしれないいくつかのインプットを感謝します。

移動するファイルがないため、ADDを実行しようとすると、明らかにエラーが発生します。ボリュームをマウントする方法を見つけようとしていますが、今のところ無駄です。

編集: 質問は「ハードドライブへの移動」と同じですが、移動するためにDockerファイル内に作成されたコンテナのIDを取得する方法を探しています。そのスレッドはそのような答えを提供していますが、私はDockerfile自体の中でそれらを使用する運がありませんでした。 http://something.com --username XYZ --password bluh/new_file.txt /tmp/new_file.txt特定のファイルのダウンロードなどのため

RUNのwgetの-Oため

+0

[Docker - コンテナーからホストへのコピーファイル]の複製が可能です(https://stackoverflow.com/questions/22049212/docker-copy-file-from-container-to-host) – dimo414

+0

どのように動かすかを尋ねています。私はcpを使用することが可能であることを知っていますが、まだ使用されているコンテナのIDを見つけることができませんでした。 – AscendedKitten

+0

Dockerコンテナ内またはホスト上でファイルを使用しようとしていますか? – jdno

答えて

2

短い答えは不可能です。

Dockerfile イメージを作成します。これは短寿命のコンテナとしてrunです。ビルド中に、ホストとそのファイルシステムへのアクセス権(書き込み)はありません。一時的なコンテナを実行する不変のイメージを構築したいので、どちらが理にかなっています。

できることは、コンテナでrunです。ホストからのパスをvolumeとしてコンテナにマウントします。これは、ホストとコンテナの間でファイルを共有できる唯一の方法です。ここで

あなたは sherylynn/wget画像でこれを行うことができる方法の例です:

docker run -v /path/on/host:/path/in/container sherylynn/wget wget -O /path/in/container/file http://my.url.com 

-v HOST:CONTAINERパラメータが指定した場所で容器の内側に装着されているホスト上のパスを指定することができます。

wgetについては、ダウンロードが完了した場所を明示的に指定するので、1つのファイルをダウンロードするときに-Oよりも-Pを優先します。ボリュームの場所に-Oを指すと、ダウンロードしたファイルはホストシステム(マウントしたフォルダ内)で終了します。

自分のイメージや環境がどのようなものかわからないので、自分のイメージでうまく動作するには、1〜2つの調整が必要な場合があります。一般的な推奨事項:wgetまたはcurlのような基本コマンドの場合、既製画像はDocker Hubにあります。これは、wgetまたはcurlを使用したいが、直接実行することができない継続的インテグレーションパイプラインなどを設定する必要がある場合に非常に便利です。

+0

ありがとう!悲しいことに私は与えられたタスクなので環境を変更することはできませんが、このコマンドを試行すると "Illegal Option"エラーが発生し、0以外のコード2が返されます。--auth認証のためのチャレンジはありませんか? – AscendedKitten

+1

はい、それはDockerにバンドルされている/配布されているプレーンオールの 'wget'です。 'docker run sherylynn/wget wget --help'を使うと、使用可能なすべてのオプションの一覧を見ることができます(ローカルのものとまったく同じにする必要があります)。 – jdno

+0

同じことがDockerfileに適用されますか?代わりに 'VOLUME'を使用しなければならないと思いますが、同じ機能を使用できますか? – AscendedKitten

0

使用のwget -O代わりに-P

ありがとうございました

+0

答えをいただきありがとうございますが、VMが終了した後にファイルがなくなったという事実は変わっていないようです。 – AscendedKitten

関連する問題