memorandumsスマートフォン用の表示で見るmemorandums日々の作業ログです。dockerメモ2019-11-03いまさらですが。仮想化ソフトウェアって便利ですね〜。VMwareとか昔からあったので、どういう感じに使うのか何となくわかっていました。Fusionとかよく買っていました。FusionはmacOSがアプデするたびに購入しなければならないのが憂鬱でした。VirtualBoxが出てきてくれたおかげでその面倒さから開放されました。ここまでの話は2010年くらいの話だと思います。今でもVirtualBoxは入れていますし、Windowsが必要なとき(最近はあまり出番がありませんが)、例えば、Mac版のExcelで印刷するとズレてしまうやつを印刷するとき、とか、非常勤先でのOfficeの入門解説をするときにWindowsでのスクショが必要なので使う。その後、Dockerっていうキーワードを目にするようになりました。Wikipediaによると2013年頃からのようです。プロセス単位で仮想化できる。VMwareなどに比べると高速・効率的っていう話を見聞きしていました。実態はどう使うのかよくわからなかったし、必要性も感じなかったのでスルーしてきました。学生さんから、ある企業の入社選考用の課題がわからないので。質問されたので環境構築してやってみたのがdockerでした。その企業が提供してくれている手順書にしたがってコマンドを入力するだけでしたが、何となく使い方がイメージできました。Railsの授業もしているし。Cloud9に頼っているのも不安です(残クレジットを気にする必要があり、万が一サービスが停止すると演習ができなくなるリスクもあり)ので代替手段は用意しておくべきですので。やったことちょうど連休で、特に用事もなかったので、自宅で少し勉強してみました。ネットの「dockerとは」みたいなエントリーが山のようにあったので、ざーっと見てみました。メリットや概略は何となくわかりましたが、やはりわからない。書籍もいくつか出版されていたので買おうかとも思いましたが、実際に中身を読んでみるとなかなか詳しすぎて。うーんここまで必要何だろうか?と疑問もありました。Dockerが公開している公式チュートリアル(以下)をやってみることにしました。docker-curriculum.comdockerコマンドを手に馴染ませる程度の練習にはなりましたが。概念がしっくりきたか?と言われると「?」でした。自分で言うのもなんですが理解できるまでが本当に大変です。次に、もう少し具体的に何かしてみようと思い、以下のRails開発環境を構築するエントリーを写経してみました。参考にしたのは以下の公式ページでした。Hubに公開しているので、それを利用した方が早いな。pullしてイメージを操作したり、コンテナを操作しているうちに、イメージとコンテナの違いも見えてきました。コンテナを開始したり停止したり、イメージを入れたり削除したり、具体的にdockerの内部の仕組みまでは理解できていませんが、VirtualBoxでイメージを作成して起動・停止で使うくらいには何をどうすればいいのか理解できました。わかった気になれません。あとは必要に応じて、使いながら必要な知識を調べていこうと思います。Windowsもまともにインストールできない状態でした。Dockerが導入できるのか?あと、イメージファイルの格納場所がネットワークドライブになるのと、ユーザプロファイルの保存場所(再起動すると消える可能性とか)とかは、実際に動かしてみないと見えません。来期、試してみたいと思います。学習メモ間違っているかもしれませんが、VirtualBox(以降VB)との対比でDockerについて理解したことをメモしておきたいと思います。VBではOSのイメージをOSのディスクやisoファイルなどを利用して自作することもできますし、以下のような配布サイトがあると思います。Hubという公式リポジトリ?があり、OSだけでなくOS+プロセス(rubyとかrailsとか)を同梱したイメージを管理しています。Hubではユーザ登録すれば各ユーザが自分のイメージをpushすることができるところも素晴らしいところだと思います。VMwareVBでは下図の赤枠のようにローカルに作成したイメージファイルを保存して使用することができます。このイメージファイルを起動してOSにログインして利用する感じになると思います。Hubなどからダウンロード)してきて利用します。ターミナルに入力します。叩けば一覧がみれます。最初、このイメージをどこにおいてどうやって管理するんだろう。いうのが気持ち悪かったです。保存場所はあるにはあるのですが、VBのようにVDIファイルのような単一ファイルではないため、あまり意識しなくていいのかな。Dockerが管理するフォルダに保存される。いう理解でいいようです。入力します(runはcreateとstartを実行してくれるよう)。VBの場合は、イメージとコンテナ?は1:1でしたが(←感覚的に)、Dockerの場合は、1つのイメージ(例えば、ubuntu)をもとに、別個のコンテナを作成して起動することができます。最初、イメージとコンテナというキーワードが出てくるのですが、何がどう対応しているのかわかりにくかったですが。イメージはあくまでファイルイメージであって、そのイメージファイルをメモリにあげて具体的に操作できるようにしたまとまりがコンテナ。いう感覚であることがわかりました。同じアプリ(ファイル)から別個のアプリが何個でも起動できるのと似ていると理解しました。それぞれ別個のOSとして扱えディスクもメモリ空間もコンテナ単位の管理になるようです。いうコマンドで起動状態をみることができます。Linuxなどのプロセスと同じですね。そのプロセスに「OSも入っちゃっている」というのがDockerの素晴らしさなのだと思います。