Dockerのコンテナーからとりあえずファイルを転送する

00_pp53_pp_tp_v

本日Dockerのコンテナーからとりあえずファイルを転送したいって要件にぶち当たったので、とりあえずcurlを利用して送った方法をメモしておきます。

これも、最近多い「自分に対する備忘録」です。申し訳ありません。

スポンサーリンク
レクタングル大

Dockerホストからコマンドを叩く訳ではない。コンテナーからやりたい

経緯としては

  • Dockerコンテナーが自動生成される環境
  • Dockerコンテナーがいつ自動生成されるか、ホストは知らない
  • だから、Dockerコンテナーの「中から」、Dockerコンテナーのファイルを転送したい
    (厳密には、自分自身が死ぬ前に、ファイルを転送したい。シェルとかで)

なので、docker cpは使えない(ですよね?)。

なので、以下の選択肢を考えた。

  • 外の世界にNFSサーバーを立てる
  • 外の世界にhttpサーバーを立てて、phpでcurl転送する

前者が15分くらいやってもうまくいかなかった。

面倒だから、後者にした。

外の世界にhttpサーバーを立てる(with php)

もう、自宅ラボだからセキュリティはどうでもいい。全くセンシティブな情報はない。

だから、とりあえず動かすためである。

  • yum install -y httpd
  • yum install -y php

とりあえず、これでApacheでphpが使えるはず。

ファイルアップロード用のphpスクリプト作成

あとは、色んな人のサイトを参考に、phpのアップロード簡易スクリプトを作成。

この方のサンプルを、ほぼ丸コピーさせていただきました・・・)

変えたのは、「/var/www/html/file」の箇所くらい。

そして、/var/www/html/fileディレクトリを作成する。パーミッションを設定。

稼働確認

ブラウザから普通にファイルをアップロードしてみる。URLに「Apache立てたホスト名/upload.html」と指定して。

これでOKだろう!・・・と思いきや、httpdのerror_logに以下が表示されて、アップロードできない。

この時点で泣きそうになる。でも、Google先生は偉大です。

SELinuxが邪魔していました。

無事ブラウザからファイルのアップロードがされた事を確認。(つまり、/var/www/html/fileにファイルが追加された)

Dockerコンテナーからcurlでアップロードする!

当然だが、まずはコンテナにログインして確認する。(実際はDockerコンテナにシェルを埋め込んでおくが・・・)

あとは、以下みたいな感じで、Dockerからcurlでファイルをアップロードする。

無事Apacheにファイルを転送できた。

所要時間1時間程かかりました・・・

勉強を再会する方へ
スポンサーリンク
レクタングル大
  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">