Dockerのコンテナをデータでやり取りする方法

2018年12月3日

Docker

Dockerのコンテナはpullすることで簡単にOS構築できてしまい、その後のサーバー設定なども、commitすることで自分でコンテナをバージョンアップさせていくことができ、非常に便利に使えて、WEB開発を行っている今では手放せないツールになってしまいました。 10年前からは考えられないDockerの使い心地の良さですが、Dockerの一番の良さは、その動作の軽さにつきます。 VMwareやVertualBoxなど仮想OSツールはたくさんありますが、そのどれもOSの中に別OSを直接起動して、二重にOSが立ち上がってしまうため、大量にメモリの奪い合いが発生してしまうため、動作も遅くなる上、ベースOSの環境にも良くなかったのですが、コンテナというアーキテクチャそのものを改善した仮想技術のDockerは本当にいい技術だと考えられますね。

一昔前の開発環境

VMware、VertualBOXの他にも、XAMPPMAMPというアプリケーション上でapacheやmysqlを起動して、WEB開発環境を簡単に、軽く構築するパターンもありますが、 この2つのツールのデメリットは、nodejsを使いたいといったような特殊な環境構築はベースOS内で個別に行わなばいけないという点でした。 また、最も初期の頃や、確実な開発環境構築としては、開発環境専用のサーバーを構築し、そこにftpやsshでデータ転送しながら(またはvimなどで直接)ファイルをアップロードして行う開発環境もありましたが、複数人で開発をする際など、お互いにファイルを上書きしあって、プログラムの先祖返りなどが発生しがちな点がデメリットになります。 [Tool] インターネットブラウザで開発できるWeb-IDE “Codiad” また、オンプレサーバーに開発環境を作った際には、WEB-IDEツールなどをインストールすることで、コンフリクトは防げる運用はできるのですが、今度は自由にエディタを使えないというデメリットも発生してしまいます。 これらのデメリットを一切取り除くことができるDocker技術とプログラムコンフリクトをなくしてくれるGITツールを組み合わせて行う開発はもはや鉄板でもあるし、必須スキルなのだと考えられますね。

Dockerのimageをファイルでやり取りしたい

Dockerを使っているとDockerHUBでの便利なやり取りはいいのですが、仕事で使うプロジェクト専用のイメージなどを管理したくなってきます。 そうした際は、コンテナをイメージファイルに書き出して、そのファイルをプロジェクトチーム内で共有し、全員の開発サーバー環境を合わせるようにすればいいだけなんですが、あまりこうした事をやっているエンジニアがいなかったので、やり方だけ書いておきますね。

起動しているコンテナをImageファイルに書き出し

$ docker export %container% -o %image%.tar

ImageファイルをDockerに取り込み

$ docker import %image%.tar

開発環境に求めること

上記のようにDocker-Imageをファイルでやり取りすることで、外部に流出しないOS環境が構築できますが、OSファイルは内部の設定にもよりますが、2,3GBぐらいの容量になることもあり、WEB経由で扱うファイルとしては、比較的扱いづらくなる場合もあるので、そうした点を覚悟しておく必要はありますね。 あと、importした直後のDocker imageは、image名が<none>となっているので、Imageを"start-attach"して、そのコンテナを"commit"して上げる必要があります。 また、OS情報を更新する際は、メンバーに都度同様の作業を行ってもらう必要があるので、そうした手順書などを作っておくといい感じに進められるでしょう。

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。