- Dockerの学習方法が知りたい
- 学習コスト高そうだけど学ぶ意味ある?
- おすすめの本はある?
今回の記事ではこんな質問に対して解答していきます。
プログラミングで新しい言語にチャレンジしようと思うと、必ず必要になるのが環境構築です。
しかし環境構築にはたくさんの障壁があり
環境構築の障壁
- path が通っていない
- ポートが違う
- 必要な物がインストールされてない
- インストール時にエラーが出る
- バージョンが違う
などに悩まされている人も多いと思います。
正直昔の僕は環境構築が大の苦手で、プログラミングの最大の壁は環境構築だと思っていました。
しかしこんな悩みを解決してくれたのがDockerでした。
そこで今回の記事ではDockerとは何か、使用するメリット、現場ではどの様に使われているのか、おすすめの勉強法について解説します。
この記事を読んで環境構築で消耗していた時間を最小限にして、開発に専念出来るようになりましょう。
Dockerとは
「Dockerとは」で検索をすると、コンテナとか仮想マシンとか見慣れない単語のオンパレードで理解不能になると思います。
かなり噛み砕いて概要だけをまとめると下記のようになります。
Dockerとは
- 自分のパソコンの中に新たなパソコンの領域を作る
- その領域ではRailsやWordPressの様な好きな環境を構築可能
- 作成した環境は好きなときに起動、停止、削除が出来る
- 環境を削除しても設定ファイルが残っていれば簡単に復元可能
- 作成した環境(コンテナ)はイメージという単位で管理される
- DockerはGo言語で作られている
VagrantやVMを使ったことがある人はそれと近しいイメージを持って頂けると分かりやすいかもしれません。
Dockerを使うメリット
Dockerを使うメリットは3つあります。
Dockerを使うメリット
- 環境構築を気軽にやりなおせる
- 設定ファイルから環境の復元が可能
- 先人たちが作った環境を手元で動かせる
環境構築を気軽にやりなおせる
一度でも環境構築をしたことがある人であればピンとくると思うのですが
初めてする環境構築は文字通り地獄です。
冒頭にも紹介したような環境構築の障壁をすべてクリアする必要があり、1つでも間違うと環境が起動しません。更にインストールしたライブラリが悪さをして、別のエラーの原因を生んでしまうケースもあります。
しかも初めて行う構成の環境構築では、何が悪さをしているかわからず、やり直すにもインストールしたものをすべて削除する必要があり、かなり大変です。
そこでDockerの登場です。
Dockerを使えば簡単にコンテナやイメージを作り直せるので、インストールしたライブラリをすぐに削除し、1からやり直すことが出来ます。
隔離された領域で作業が出来るから、普段利用しているソフトやライブラリを汚染する心配も無く、安心して環境構築が出来るよ!
設定ファイルから環境の復元が可能
DockerにはDockerfile
やdocker-compose.yml
と言った設定に環境構築のレシピを書いて行きます。
このレシピファイルを使い環境構築をすることで、手元で構築した環境を簡単にチームメンバーに共有出来たり、本番環境に反映することが出来るようになります。
先人たちが作った環境を手元で動かせる
Dockerfileは環境構築のためのレシピです。
言い換えるとこの設定ファイルさえあれば、いつでもどこでも簡単に環境のコピーが作成出来ます。
Docker hubというサービスには一般ユーザーたちが作成したDockerfileをアップロードして公開・共有できる仕組みがあり、これらを使うことで先人たちが作った環境を手元のパソコンで動かすことが出来るようになります。
例えばRailsの環境を作りたい時はDockerfileに下記の1行を書くだけで構築が可能です。
FROM rails:onbuild
Railsの環境を0から作ろうとするとrbenvを入れたり、rubyのバージョンやRailsのバージョンを指定したりとかなり面倒ですがDockerを使えば一瞬で終わります。
現場ではどの様に使われているのか
昔はVMやVagrantを使う企業が多かったですが、最近ではDockerを使っていない企業は時代遅れと言われるまでになりました。
それだけDockerは現場にも大きな影響をもたらしています。
Dockerは大きく分けて2つの用途で使われています。
チームメンバーの個人環境の差異の撲滅とデプロイするまでの管理コスト削減です。
個人環境の差異撲滅
一昔前は環境構築手順がGithubのwikiやリポジトリのREAD MEなどに書かれていましたが、殆どのケースでその手順は古くなり腐っていました。
昔は必要なかったけど今は必要な手順
逆に昔は必要だったけど今は不要になった手順
のオンパレードという状態。
これだとドキュメントの意味が全く成していないどころか混乱を招くだけでした。
しかし、Dockerを導入することで環境の構築に必要なものはDockerfileに記載して
GithubのwikiやREAD MEにはDockerの起動方法だけを書いておけるようになりました。
仮に必要なライブラリが変わったとしてもDockerfileを変更すればよく、Dockerの起動方法も早々変わるものではありません。
何においてもドキュメントを残すことはとても大事ですが、それを腐らせないようにメンテナンスをするのはとてもコストがかかります。
Dockerを導入した事で環境構築の手順というドキュメントを管理するコストを一気に削減でき、チームメンバーで一貫した環境の構築が出来るようになりました。
デプロイの簡略化
Dockerが流行る前は、各環境にデプロイを実行する時は
各サーバーにSSHで接続を行い、gitコマンドでcloneを実行して落としてくるかjenkinsなどを使ってsyncするのが主流でした。
しかし、Dockerが主流となった今ではイメージをAWSのECRにアップロードし、それをEC2に落としてきて起動という簡単な手順で本番環境のデプロイが可能になりました。
具体的な例としては下記の様な流れになります。
現場でのDockerの使用方法
- クライアントとサーバー用のDockerfileとdocker-compose.ymlを定義
- イメージをAWSのECRにアップロード
- ECRからEC2にイメージを落としてきて起動
おすすめの勉強法
Dockerに慣れるためにはDockerを実際に使ってなにかの環境を構築してみるのが一番おすすめです。
が、やはりネットに散乱している情報の中から必要なものだけをピックアップして実際にやってみるというのは中々ハードルが高いですよね。
そんなあなたにおすすめなのがドットインストールやUdemyでの動画学習です。
ドットインストール
ドットインストールでは無料でDockerの基本的な事を学べる動画が視聴出来ます。
4年以上前に投稿された動画なので情報が古いですが、基本的な概要や使い方、流れは一通り把握出来るようになっています。
まずはこの動画を見てDockerを実際に使ってみると良いでしょう。
Udemy
UdemyではDockerに関する動画が30本以上投稿されています。
その中でもおすすめしたいのが下記の動画です。
ゼロからはじめる Dockerによるアプリケーション実行環境構築
こちらの動画は5時間以上、60以上のレクチャーというボリュームで初心者から中級者までの方向けの内容が詰め込まれています。
ドットインストールとは違い有料ではありますがその価値は十分にある内容です。
また、本来であれば10,800円と高額ですがセール中は1,900円とお求めやすい価格になっているのも嬉しいですね。
そして更に、30日間返金保証対象なので万が一、動画を購入したけど求めているものではなかったという場合は動画の購入をキャンセルすることも可能となっています。
最初の数本の動画は無料で視聴可能になっているので、まずは実際にどんなものか視聴してからその先に進むかを判断すると良いですが
Dockerを本気で学びたいと考えている方にはイチオシの動画です。