Dockerに苦手意識があったのですが、わかりやすい解説を見て次の点がイケてるなって感じました。ポイントはモダンな開発みたいにインフラ構築もコマンドでサクサクです。
Docker の利点
Docker hub がある
docker環境をパッケージ化したimageファイルはdockerhubで検索できます。
だいたい思いつく一般的な構成のimageはもうサイトにあるのでmysqlとかubuntuとか検索して持ってこれます。
ソフトやサーバを一つずつインストールする手間が不要になるだけでずいぶん楽ですね。
(いわゆる現場猫作業が不要です。ヨシ!なに見てヨシって言ったんですか?インフラ的に言えば手順書がほぼ不要です)
手順を細かく設定できる
ソフトをダウンロードして各種設定するとか一度設定ファイルを作ると使いまわせます。
またimageコンテナはgitのようにコマンドでローカルにダウンロードできます。
他にもコマンドがありましてDockerfile 1枚で以下のような管理ができます。
- 基礎に使うimageファイルを指定する
- ローカルのファイルをコンテナにコピーする
- Pythonのモジュールのインストールを指定のファイルから行う
- 環境変数設定
- 作業ディレクトリ設定
- ネットからファイルを追加
- コマンドの実行
起動状態をGUIツールでチェックできる
imageの起動状態もdocker for windowsってGUIツールで現状を確認できるのでぼーっとしてても大丈夫です。
環境が共有できる
一度imageファイルを作っておけば人の入れ替わりがあっても環境を共通化できます。
なので人が入れ替わった初回は楽できますね。
Docker以前 / Docker以後
平成頃だと仮想OS環境の構築はソフトで実現してたんですけどこれがめんどくさい。
(パーティション切ったり、一度切ったら細かくすると隙間ができてめんどくさいとか、インストールにちょー時間かかるとか...etc)
今はDockerのコンテナで仮想環境をパーティション空間を気にせずポコポコ使いまわせます。って話でコンテナってなんだ??ってなりがちですけどコンテナには大した意味ないので安心です。
プログラム環境の構築
例えばMySQLの環境を構築したらDBにコネクションしてデータ確認したいですよね。
そのためにローカルにPythonとか入れてコネクション張るパッケージを追加したりコネクションを張るコードを書いて実行したりとあります。
pythonの場合はpipもいいですけどpyenvも似たことできるのでそっちもいいなとかでした。
で開発環境はanacondaかvanillaかあるんですけど、データサイエンス専門ならanancondaでpythonで諸々開発したいならvaniraで環境組めるとスッキリしていいよねって話がありました。
まとめ
過去の苦手意識から食わず嫌いしてましたが今はずいぶん使いやすくなったよって懺悔の記事でした。
わかりやすい解説動画はこちら