Dockerって最近よく聞くし、勉強しておきたいけど、どうやって勉強するのが良いかな…?
このような疑問を解決していきます。
こんにちは、kirohi(@huslc2es)です。
バックエンドのエンジニアにとって欠かせない技術の一つに「Docker」があります。
先日僕は、サイバーエージェントさんの「Docker/Kubernets勉強会」に参加する機会に恵まれました。
その準備のために、Dockerの基礎的な部分を勉強してたんですよね。
この記事では、勉強中に僕が見つけた「Dockerをちゃんと理解するための学習リソース」を紹介していきます。
記事の内容は以下の通りです。
- Dockerって何?
- Dockerを理解するための学習リソース紹介
- Dockerを効率的に勉強する方法
アルバイトやインターンにまだ行ったこと無いけど、Dockerの基礎とか抑えておきたいな、と思う大学生にもおすすめです。
それでは中身に入っていきます。
目次
Dockerって何?
Dockerってそもそも何でしたっけ。
Dockerはコンテナ型の仮想化環境を提供するオープンソースソフトウェアである。
VMware製品などの完全仮想化を行うハイパーバイザ型製品と比べて、ディスク使用量は少なく、仮想環境 (インスタンス) 作成や起動は速く、性能劣化がほとんどないという利点を持つ。
wikipediaより引用
と言われてもなかなかイメージしづらいですが、一言で表すと「軽量なコンテナ型の仮想化技術」です。
Dockerを用いることで、以下のようなメリットを得ることが出来ます。
- アプリケーションの実行環境構築を簡単に出来る
- 実行環境をテキストファイルとして共有できる
- ホストOSに直接アクセスするので、オーバーヘッド(処理を行うための手続き)が少なくなる
- デプロイやビルドが容易になる
例えばチーム開発においてDockerを使えば、開発環境を同じ状態でスタートすることが可能です。
つまり、「It works on my machine¯_(ツ)_/¯(俺のマシンでは動くよ)」という状況をDockerなら解決出来るということですね。
他にもメリットはあるのですが、下記で紹介する学習リソースで改めて確認してみてください。
Dockerを理解するための学習リソース紹介
ここからは本題、Dockerを効率的に勉強するための学習リソースを紹介していきます。
[Webサイト] Dockerの公式ドキュメント
いきなり公式ドキュメントで申し訳ありませんm(__)m
ですが、ここに書いてあることは全て正確なことです。
なので、困ったらここで調べてみると、これからのレベルアップにもつながると思います。
とはいえ初学者の方にとっては、勉強するために使うのに苦しいものがあるので、次にいきましょう。
[Webサイト] 入門Docker
@_y_ohgiさんが作成されたDockerの基礎を学ぶことが出来るサイトです。
DMM.comの社内勉強会に使用した資料の一部とのことです。
サイトのAboutを引用します。以下の通り。
Dockerの入門からプロダクションで活用するプラクティスについてのドキュメントです。
プロダクションへ導入するために必要なDockerの概要から設計までをなるべく最短経路で学ぶことが目的です。
また想定する読者層についても書かれています。
- WebAPIのようなサーバーサイドのプログラミングをしたことがある
- Dockerをこれからプロダクション環境へ導入してみたいと考えている初学者
公式ドキュメントよりもかなり読みやすいサイトでありながら、分かりやすい解説です。
なので、まず最初にこのサイトでDockerがどんなものか掴むのはかなりアリだと思いました。
>> 入門 Docker
SlideShareには、勉強するのに役立つスライドがたくさんあります。
こちらは、Docker五周年を記念して作られたハンズオンのためのスライドです。
ササッと読んでみると、Dockerのイメージが湧いてくると思います。
Dockerの基本概念を丁寧に分かりやすく解説してくれているスライドです。
Dockerには「イメージ」や「コンテナ」という用語が出てきますが、最初はちょっと想像しづらいと思うんですよね。
コマンドを打ちながらも「あれ、今なにやってんだっけ。。」と想像出来てない状態で勉強してたことが、僕も結構ありました。
ですがこの方のスライドを読むと、Dockerの概念とコマンドの関係性が、徐々に掴めるようになっていく感じがしますね。
他のスライドも色々巡ってみるの、おすすめです。
[Udemy]ゼロからはじめる Dockerによるアプリケーション実行環境構築
さて、僕はこのブログではいくつもUdemyの講座を紹介してきていますが、Dockerにおいても良い講座を見つけました。
それが下の「ゼロからはじめるDockerによるアプリケーション実行環境構築」ですね。
この講座、僕はすでに受講済みでして、ハンズオンでDockerを学ぶことが出来ました。
具体的に学ぶことは以下のような感じです。
- Dockerの基礎概念
- Dockerのインストール
- Dockerコンテナの実行
- Automation Build
- Docker Machine
- Dockerのネットワーク
- Dockerのデータ管理
- Docker Compose
- Docker Swarm
後半につれて段々と理解するのが難しいテーマになりますね。
ですが、この講座ではスライドを用いながらも、ちゃんとコマンドを打っていきます。
なので、自分のターミナルで実行されている結果が正しいのか確認出来ます。
加えて詰まったところがあれば、すぐに講師に質問できるんですよね。
それがUdemyの良い点なので、初学者の方におすすめできます。
>> ゼロからはじめるDockerによるアプリケーション実行環境構築
※Udemyの他のおすすめ講座はこちらの記事にまとめています。
[書籍] Docker/Kubernetes 実践コンテナ開発入門
Dockerのみならず、Kubernetesにも触れている技術書です。
いろんなところでこの本がおすすめされているところを見ますね。
Dockerだけでなく、オーケストレーションツールであるKubernetesについても知りたいという方にとって、良い書籍になるでしょう。
[書籍] Docker
我らがオライリーの本ですね。いつも見る可愛らしいクジラじゃなくて、モノホンのクジラ。
現在僕はこの本を読んでいます。
率直な感想としては、いきなりこの本から入るのはおすすめ出来ないです(笑)
単純に、この本は上の「Docker/Kubernetes 実践コンテナ開発入門」よりもレベルが高い感じがします。
初学者の方にとっては、上のスライドやUdemyでひとさらい基礎を抑えたあとに読んでみてください。
逆に、これを読むあなたがすでに「Dockerの基礎は抑えていて、応用的な内容を学びたい」のであれば、この本は良い選択肢になります。
Dockerを効率的に勉強する方法
さて、ここまでDockerの学習リソースを紹介してきました。少しだけ、僕が今考える効率的に勉強する方法を書いておきます。
最初はいきなり難しい書籍などに手を出さず、最初は概念を把握し、実際に手を動かしてみるのが良いのかなぁと思っています。
インフラ系の知識は、正直僕もまだあまり勉強できていないため模索中です。
が、何にせよ、書籍や記事を読みっぱなしにするよりかは、
- コンテナを立ててみる
- Dockerfileを書いてみる
- DockerHubに登録する
- レジストリをpushする
- docker runコマンドを色々叩いてみる
- dockerで開発環境を構築してみる
のように、色々試してみるのが良いと感じますね。
その点UdemyやWebサイトだと、本と比べると勉強しやすかったですね。
その後に、技術書で深い知識を身に着けていくのが効率的です。
Dockerを勉強して、バックエンドの技術を向上させよう
使わなければいけない環境に追い込まれないと、なかなかインフラの勉強するのって腰が重いかもしれません。
ですがDockerに関しては、個人で使うにしても結構便利だと思うので、早いうちに知っておくのが良いと思います。
紹介した学習リソースと共に、素敵なコンテナライフを!
PS: おすすめの2つです↓
[…] >>【初心者向け】Dockerを勉強するための学習リソースをまとめてみた […]