PROGRAMMING

【入門者も理解】Dockerとはなにか?【専門用語少なめ】

こんにちは。もんしょー(@sima199407)です。

悩んでいる人
悩んでいる人
Dockerって何?どういうもの?使うのって難しいの?

という疑問があるかと思います。

以前以下のようなツイートをしました。

インフラに関わることが少なくてもDockerは覚えておくべきスキルだと思う。

最初導入したときは「直で入れればいいじゃんw」と思ったけど、いろんな現場で仕事すると有り難みが分かる。

環境構築を数分で出来るし、周りに影響しないのが最大のメリット。

インフラをインターンでやって良かった😂

これについてもう少し詳しく解説していきます!

動画でも解説してます

エンジニアなら仮想構築はやろう

まず結論として仮想構築はエンジニアならやるべき!

色んな意見があるかなと思います。

毎回新しい現場で環境構築面倒くさいなぁ

ローカル環境でもっと手軽に開発したいなぁ

と色々と思うところあると思います。

今回、そういった悩みを解決できると思うので、ぜひチェックしてみてください!

仮想環境構築はエンジニアならやるべき

ここでは、仮想環境とはどういうものなのかというのをざっくり理解できるように説明したいと思います。

仮想環境とは?

自分のパソコンまたはサーバーとは別に新しい環境を作り出すこと

これが仮想環境です。ようは作り出した新しい環境のことです。

例えば、

Macを使っているユーザーがWindows専用のソフトを使いたいと思ってもできないですよね?でも、仮想環境を作ってWindowsの環境を作り出せば、そのソフトを使えるようになります。

それが仮想環境役の最大のメリットかなと思います。

ちょっとエンジニアよりの話をさせてもらうと、

自分のパソコンに入っているプログラミング言語のバージョンをVer3だとしましょう。

けど、仕事の現場で使っているプログラミング言語のバージョンがVer2だとします。

その時にパソコンを会社のバージョンに合わせないといけないんですけど、わざわざ会社のバージョンに合わせる為にグレードダウンさせるのはすごく面倒くさいです。

自分が新しい状態にいるのに、何故わざわざ古いところにしなければならないのか…

これを仮想環境は解決してくれます

Dockerが注目される理由

Dockerは何で人気なのか、Docker…と言われてるのか

その理由は大きく分けると3つぐらいあると思います。

1つ目が手軽さ、2つ目は移動のしやすさ、そして最後が設計図を何度も使えるというところです。

この3つが挙げられると思います。

特に、移動のしやすさというところは結構重要なところでして、Dockerの基本的な考え方として1個の船をイメージしてもらって船の上にコンテナと言われている色々なパーツが載っているというイメージなんです。

その中に、プログラミングするもの、その上Webサーバーが乗ってるとかデータベースがありますという考え方です。

コンテナという考え方が重要

何でコンテナという話をしているのか?と言うと、コンテナを違うところに移動させたり、それを下ろしたりできるんです。

つまり、いらないものはどんどん削除したり、違うところに移すというのがカンタンというところからコンテナと名付けられ、コンテナという言葉が使われているのかなと思います。

オフィシャルでもコンテナという名前になっているので、そういった感じで使っているのかなと思います。

例えば、PHPという言語でコンテナを作っていたけどRubyという違う言語を入れたいと思ったら1回PHPのコンテナっていうのを降ろして、次にRubyというコンテナを積んであげれば、その環境はRubyでプログラミングができるという感じです。

これって結構便利なことなんです。

Dockerの設計について

まだ伝わりきれていないかも知れないので、設計図のお話にいきましょう。

設計図が何度も使えるという点なんですけども、DockerにはDockerfileと言われているファイル専用の設計図があります。

この中にDockerでどういう物を積みたいとか、どういうコマンドを打っていこうかっていうのを書いていくわけなんです。

これを1個書いておくと、何度も使い回すことが出来るわけです。

コマンドを「ポチッ」と押すとその環境がガッーと作り上げられて、これがすごく便利だということでDockerを使う人が多いという感じです。

この設計図の変更もちょこちょこと変えていけばできるので、「バージョンを変えたい」「新しいものにしたい」「バージョンを古くしたいなあ」と思ったら、そこで書き換えてあげればいいということです。

Dockerの学習コストについて

どれだけの難易度なのか?というところですよね。

インフラの全般的に『やっぱりとっつきにくい』『最初は難しいな』と感じる部分はありますが…

Dockerも一度覚えてしまえばすごくラクです。

ただ、最初の入りのところが辛いかなと思います。

コマンドの基礎を勉強しよう

コマンドライン、ポートとはどういうものか?

そういった本当に基礎的なところ、最初のベースの部分を一旦クリアしておく必要があります。

その為には、ドットインストール、プロゲートといったオンラインで学べる学習サイトでそういうのを一通り学んでおくのをおすすめします。

最初僕も勉強した時に、エラーとかで

使いたい人
使いたい人
何故こんな黒い画面で作業しなければいけないのか

とか、結構不満に思ったこともあるんですけども…

基本的な勉強をすれば、ある程度Dockerは使えるようになってくるので、これは1回勉強しておく必要があると思います。

Dockerの基本的な勉強は、Docker以外のSSHと言われるような接続の部分とかにも役立つことがあるので、コマンドラインというのはどのエンジニアも勉強しておくべきことなんじゃないでしょうか。

Docker-composeとは?

少し技術的なお話をしていくので、興味がない方は飛ばして頂いてもOKです。

Dockerを使うならDocker-composeと言われている管理ソフトというか、管理サービスというのを使った方がいいです。

Dockerは先に言ったような1つ1つのコンテナを1つのDockerFileと言われているものに書く、というのが普通なんですけども…

これを例えば、1個のプログラミング言語のコンテナ、データベースのコンテナ、Webサーバーのコンテナみたいな感じで1つ1つ立ち上げるとなると結構面倒くさいです。

それを一括で管理してくれるDocker-composeというものがあるので、Docker-compose内に何処の「DockerFileを読み込みます」っていうことを書いておきます。

すると、コマンドを『ポチッ』と押せばそこに必要な全部のDockerFileが読み込まれて、コンテナがばんばん立ち上がります。

是非Dockerをやる場合はDocker-composeを覚えておくとすごく便利かなと思います。

まとめ

まとめ1つ目は、仮想環境は自分の作りたい新しい環境を作れる

Macの環境の人がWindowsの環境を作るとか、他のLinuxの環境を作るとか、そういった事ができるようになります。

2つ目は、Dockerの良さは他のサーバーへの移動の容易さ設定の早さが売りになります。

例えば、ローカルで開発していたモノを本番のサーバーにあげるという時もすっごく移動がスムーズにできます。

DockerFileだけ移動すればいいくらいの楽な環境構築ができるようになります。

3つ目は、まずはコマンドラインの勉強からするのがベター。

簡単とは言いつつも、やっぱりコマンドラインとかある程度のインフラのことをわかっていないとちょっと使いにくい部分もあるので、最初に勉強しておきましょう。

1、2日でも何となくっていうところを触れておけば、Dockerっていうものが使えるかなと思うので興味がある方は使ってみてください!

あわせて読みたい
[docker,nginx]mysqlコンテナとPHPコンテナをつなげる【ポイントはdriverです】こんにちは。もんしょー(@sima199407)です。 という疑問があるかと思います。 今回は、docker上のmysqlと...

今回のまとめです。

・仮想環境は自分の作りたい新しい環境を作れる
・Dockerの良さは他のサーバーへの移動の容易さ、設定の早さ
・まずはコマンドラインの勉強からするのがベター