プログラマ(エンジニア)を目指している人はDockerという単語を何度か目にしたことがあると思います。
何度も目にしてどんなものだろうと思って調べてみるも、書いてあることはいまいちよくわからないし、コマンドばかり書かれてるしで結局ちゃんと読むのを諦めて今に至るという方は多いんじゃないかと思います。
実は私もその一人でした(笑
しかし、仕事を初めてDockerを使わざるを得ない環境に置かれたので勉強して今は実際に使っていますが、非常に便利なものです。
特にこれからプログラミングの勉強を始めるという初心者の方にこそ使ってほしいと思っております。
そこで今回は、Dockerとはどのようなことができるのか、Dockerを初心者が使うメリット、簡単なDockerの使い方についてお話していきます。
独学で勉強するのがつらいと感じてませんか?
勉強中にわからないことが出てきて解決できないと、モチベーションが一気に下がってしまいますよね。
そうならないための対処方法は、誰かに質問できる環境を作ることです。
質問できる環境を作ることで、効率よく勉強を進めることができるようになります。
また、質問をするためには、何がどうわからないかしっかり把握する必要があるため、質問後の理解度が全然違ってきます。
その結果、独学で勉強するより
- 時間
- 効率
- 理解度
全てにおいて上回ることができます。
TechAcademyであれば、1週間無料でプログラミングスクールの体験をオンラインで受けることが可能です。
この無料期間にわからない部分の質問をするのもいいですし、プログラミングスクールの雰囲気も体験できるので、いい刺激になりますよ。
Dockerってどんなことができるの?
簡単に言うと、今動いているPCの中に仮想的にPCの環境を作ることができます。
厳密に言えば若干違いますが、こんな認識で特に問題ないかと思います。
もう少し具体的にお話します。
例えば現在Windowsが動いているPCを使っているとします。
でもプログラミングのためにCentOS(Linux)が使いたいと思ったとき、現在使っているWindowsのPCの中でCentOSを使うことができます。
また、現在CentOSを使っていたとして、Ubuntuを使いたいと思ったとき、新たに入れ直さなくても現在使っているCentOS上でUbuntuを使うことができます。
なんとなくイメージできましたか?
では、次にこんなことができてどんなメリットがあるのかお話していきます。
Dockerを使うメリット
Dockerを使って環境を作ること自体が非常に簡単です。
どれくらい簡単かと言うと、コマンド2~3行ほど叩くだけでできてしまうくらい簡単です。
そのコマンドも意味さえ理解してしまえば簡単です。
(コマンドについてはまた次回触れます)
それくらい環境を作ることが簡単なので、構築・削除が非常にお手軽にできるんです。
例えば何かをインストールして、動作がおかしくなったから消してやり直すってことが簡単にできます。
通常OSを丸ごと消して再インストールなんてできませんからね。
そのため、少しずつ消したりして原因を探って直していきますが、そういうことをせず、セーブ&ロード感覚でやり直すことができます。
これがほんと便利なんです。
インストールしたものを消したとしてもゴミファイルが残っていたり、インストールのせいで設定が変更されていたりすることもあるので、インストール前の状態に戻らないこともあります。
こういう場面に遭遇したとき、初心者の方だと自力での解決が非常に難しいです。
そして、こういう場面って勉強を始めようと環境を構築している最中に発生します。
そのせいで環境構築で躓いて諦めてしまう人が出てしまいます。
しかし、Dockerを使えば全てをなかったことにしてまた1から構築を始めることができます。
例えば、Aというサイトを参考に構築していたけども途中で変になった。
一旦削除して、次はBというサイトを参考にまた1から構築を始める。
こんなことが簡単にできます。
通常だと「サイトAでここまではうまくいったから、サイトBではここから?」のように前後関係を確認しながら進めないといけないですが、そういうこともなくスムーズに取り掛かることができます。
また、このDockerで構築した環境ってそのまま人に渡すことができます。
そのため、環境構築時でもプログラミングの勉強を初めてからでも人に質問がしやすくなります。
環境構築時だと、「今ここまでできたけど、ここがうまくいかない」というのがそのまま対面じゃなくても見てもらうことができます。
プログラミングの勉強中の場合、プログラミングが動かない原因が環境にあることがあるので、そこと合わせて見てもらうことができます。
逆に環境を人からもらうこともできます。
そのため、すでに完成している環境を人からもらって、その環境下で勉強を始めることもできます。
このどちらにしても初心者の方にとって非常に嬉しいことだと思います。
Dockerを使うために覚えるべきこと
では、実際にDockerを使う場合どのような手順が必要なのでしょうか。
- Dockerをインストールする
- Dockerイメージをダウンロードする
- DockerイメージからDockerコンテナを作る
たったこれだけです。
今回は詳細な解説はしませんが、それぞれについてもそんな難しいものではありません。
最初解説サイトや入門サイトを見たときはコマンドだらけで読むのを諦めましたが、やっていることはシンプルです。
それぞれの具体的な方法についてはまた次回お話したいと思います。
Dockerfileとdocker-composeについて
Dockerについて調べていると、必ず出てくるこの2つ、Dockerfileとdocker-compose
知っておけば便利ではあると思いますが、初心者の方は特に覚える必要はないと私は思います。
何故ならこの2つが使えなくてもDockerで環境構築はできるからです。
実務となればそういう訳にもいきませんが、ただ環境を作るだけなら問題ありません。
ちなみに、これら2つがどのようなものかを簡単に説明しますと、
Dockerfile → オリジナルのDockerイメージを作るための方法を記述しておくもの
docker-compose → コンテナを作る際にオプションをいろいろと指定するが、そのオプションを予め書いておくもの
ざっくりこのような感じです。
Dockerfile
もう少しだけ詳しく書いていきます。
既存のDockerイメージに、このような設定を入れておきたい、このようなパッケージをインストールしておきたいというようにカスタマイズができます。
そのカスタマイズ内容を記述したものがDockerfileになります。
インストールするものが予め決まっている場合、Dockerfileに記述した方が後からの手間が省けるのは確かですが、コンテナを作成してからでもできることなので、初心者の方が必須で書き方を覚えるべきものではないと私は思います。
docker-compose
Dockerコンテナを作る際いろいろなオプションを指定する必要があります。
例えばどのポート番号を使用するか、コンテナ名をどうするか、ファイル共有はどうするかなどなどを指定することができます。
通常はdocker runというコマンドで、そこにオプションをつらつらと書いていくんですが、それをファイルに予め記述しておくことができるんです。
そうすればdocker-compose upというコマンドだけでコンテナを作ることができます。
また、複数のコンテナを作る際、1つのファイルにそれぞれのコンテナについてのオプションを記述することができて、docker-composeコマンド1つで同時に複数のコンテナを作ることができるようになります。
これもできるようになれば便利ではありますが、Dockerfileと同じで、初心者の方が必須で覚えるべきものではないと私は思います。
最後に
簡単にDockerについてお話してきましたが、私が言いたいのは、
一度使ってみたらこの便利さが実感できるから、ぜひ一度使ってみてほしい!
これです(笑
ほんと勉強しているときに使えてたら便利だったのになーと今になって思うので、ぜひ使ってみてください!
また、就職活動・転職活動での話のネタにもなるのもメリットですよ(笑
次回は実際コマンドを叩く必要があるコンテナ作成についてお話していきたいと思います。