エンジニア データサイエンティスト

dockerとは?dockerをわかりやすく簡単に説明&インストールする!

2020年10月22日

docker簡単解説&インストール

最近dockerってよく聞くけど、dockerって何をしてくれるものなんだろう?
ネットで調べてみたけど、難しい用語ばっかで全然わからない。。

 

こんにちは、古賀です!

 

本記事では、

はてな

「dockerは何をするためのものなのか?」

「dockerのインストール方法」

について、お話します!

 

dockerは現在WEB業界をはじめ、当たり前のように使われています。

これからエンジニアやデータサイエンティストを目指す方にとっては、必須の知識です。

 

ただ、

「dockerはコンテナを作る!」

とか言われても、「dockerが何をしてくれるのか?」さっぱりだと思います。

わたしもはじめ、dockerについて色々と検索して調べてみましたが、

難しい説明ばかりで、結局「dockerが何者なのか?」があまりよくわかりませんでした。。

 

なので今回はdockerについて、難しい説明は避けて簡単に説明します!

全てを話すと逆にわかりづらくなってしまうので、

最低限理解しておくべき内容に絞ってお話していきます!

 

自己紹介が遅れましたが、

わたしは大学卒業後、上場IT企業に就職し、プログラマー、システムエンジニアとして

約10年間働いておりまして、現在フリーランスとして活動しております。

プロフィールの詳細はこちらです。

野球
プロフィール

こんにちは、古賀正雄です。現在36歳です。 簡単ではありますが、こちらのページで自己紹介とこのブログについてお話します。 高校時代 学生時代は主に野球をしていました。 進学先の高校も野球で選びました。 ...

続きを見る

 

※YouTubeに同内容を公開しております。

dockerとは?わかりやすく簡単に説明!

コンテナ

dockerは、「Docker Inc」という会社が作ったオープンソースのソフトウェアですが、

まずdockerを難しい用語を交えて説明しますと、

Dockerは、コンテナ仮想化を用いてアプリケーションを開発・配置・実行するためのオープンソースソフトウェアあるいはオープンプラットフォームである。
Dockerはコンテナ仮想化を用いたOSレベルの仮想化によりアプリケーションを開発・実行環境から隔離し、アプリケーションの素早い提供を可能にする。かつその環境自体をアプリケーションと同じようにコード(イメージ)として管理可能にする。Dockerを開発・テスト・デプロイに用いることで「コードを書く」と「コードが製品として実行される」間の時間的ギャップを大きく短縮できる。

Wikipediaより引用

となります。

 

これを簡単に言いますと、dockerを使う事で、

  • 開発環境や実行環境を簡単に作れる
  • 同じ環境を簡単に作れる

ということができます。

 

他のツールと組み合わせることで、

プログラムのソースコードを修正したら、

自動でテストを行って、自動でテスト環境や本番環境に適用したりすることもできますが、

それは応用編ということで、今回は割愛します!

 

このような機能があり、エンジニアにとってdockerは一般的に使われるようになりました。

開発環境や実行環境を簡単に作れる

dockerは開発環境や実行環境を直接自分のPCの中に作るのではなく、

コンテナという箱を別に作って環境構築をします。

 

dockerはよく「仮想化」と比較されるのですが、

従来の「仮想化」より、dockerの方がより「軽量」で「手軽」です!

※dockerも「コンテナ仮想化」なので、「仮想化」の一種です。

 

このあたりの違いを理解しようとすると、難しい図が出てきたりするので、

dockerは「仮想化」よりも「軽くて使いやすい」と理解しておきましょう!

dockerを使うだけであれば、特段理解しなくて良い部分です。

※余談ですが、
エンジニアであれば「理解すべきところ」と「今理解すべきでないところ」の判断が重要です。

 

「どういうところが手軽なのか?」

を少し掘り下げます。

 

自分のPCにプログラミング環境を作ろうとすると、

「プロジェクト」によって、「何を作るのか?」によって環境が変わってくるので、

「インストール」と「アンインストール」が必要になります。

自分のPCの環境によっては、その際にエラーが発生する場合もあります。

複数のプロジェクトを並行して進めているのであれば、

環境を切り変えるだけで相当な手間になります。

 

dockerはコンテナを作って、そのコンテナの中でアプリやOSをインストールをします。

dockerコンテナの中は自分のPCの環境とはまた別なので、エラーが出ることはありません。

間違って違うアプリをインストールしてしまっても、コンテナを捨てればOKです!

プロジェクトが終わって使わなくなったら、同じように捨てればOKです!

複数のコンテナを作っておいて、必要になった時にコンテナを使い分けてもOKです!

dockerの操作もコマンド入力するだけでできるので相当楽です!

 

このようにdockerは、

「開発環境や実行環境を簡単に作れる」のが大きなメリットの1つです!

同じ環境を簡単に作れる

システムやサービスを1人で開発する場合もありますが、

大抵は複数人で開発をすることになります。

 

その際に、自分の開発環境と同じ環境を他人のPCにも適用したい場合があります。

そこでdockerが力を発揮します。

誰かが作った開発環境を、別の人へ適用することが簡単にできます。

しかも先程お話した通り、

PCに直接インストールをせずに、別世界のコンテナにアプリやOSをインストールするため、

他人のPCだからと言って、エラーが出ることがありません。

 

まったく同じ環境で開発作業をすることで、

「Aさんの環境では正常で動くのに、Bさんの環境では動かない。。」

という悩みもなくなります。

 

このように、

「横並びで同じ環境を簡単に作れる」ことがdockerの強みです!

dockerでコンテナを作るには?

コンテナ

では、dockerはどのような仕組みでコンテナを作っているのでしょうか?

dockerは以下のように登場人物が3人います。

「docker file」⇒「docker image」⇔「コンテナ」

矢印の向きに注目して欲しいのですが、それぞれの役割を説明します!

docker file

「docker file」は「docker image」の設計書です。

設計書と言っても、大袈裟なものではなくてテキストファイルにコマンドが書かれているだけです。

中身の例として、下記のような感じです。

FROM ubuntu:latest 

RUN apt-get -y update && apt-get install -y \
sudo \
wget

1つ1つのコマンドについては、今は理解しなくても大丈夫です!

 

実は「docker file」を自分で書かなくても、コンテナを作ることはできます。

「docker file」を書けるにこしたことはないですが、

まず、

「docker file」は「docker image」の設計書

であることを理解しましょう!

docker image

続いて「docker image」についてですが、

「docker image」は

コンテナのテンプレートのようなモノで、

すべてのコンテナは「docker image」から作られる

これを理解しておきましょう!

 

dockerの機能の1つに、

「同じ環境を簡単に作れる」

とありましたが、

この「docker image」は「docker hub」と呼ばれるサービスの中で管理することができます。

「Git hub」をご存じの方はイメージしやすいと思いますが、

「Git hub」がソースコードを管理する場所ならば、

「docker hub」は「docker image」を管理する場所です。

 

みんなで使う「docker image」を「docker hub」に置いておくことで、

開発メンバーが常に同じ環境で開発作業をすることができます。

 

先程、自分で「docker file」を書いて「docker image」を作らなくても良いと言いましたが、

「docker hub」には「docker image」が既に用意されているので、

それを基にコンテナを作ることができるからです!

コンテナ

最後にコンテナについてです。

「docker image」を指定してコマンド入力することで、コンテナを作ることができます。

このコンテナの中に入って、実際にプログラム開発をしたりします。

 

「docker image」で作られたコンテナの中に必要なアプリがない場合は、

コンテナの中に追加でアプリをインストールすることができます。

 

そして、その内容が追加更新されたコンテナを「docker image」にすることができます。

矢印の関係を思い出しましょう!

「docker file」⇒「docker image」⇔「コンテナ」

初回こそ

「docker image」⇒「コンテナ」

の関係ですが、

その後「docker image」と「コンテナ」は「互いに作られる」関係にあります。

 

はてな

「コンテナ」を「docker image」化できるのであれば、

もはや「docker file」はいらないのでは?

と思うかもしれませんが、

「docker file」がないと、コンテナに「何がインストールされているか?」の確認が手間になります。

いちいちコンテナの中に入って確認する必要があります。

 

「docker file」があれば、インストールされている内容はテキストファイルに書かれているので、

すぐにわかります。

個人でdockerを使用するのであれば「docker file」は不要かもしれませんが、

複数人で同じ環境のコンテナを作るのであれば、情報共有のためにも、

「docker file」から「docker image」を作った方が良いとされています。

dockerをインストールする

PC

では実際にdockerをインストールしてみましょう!

※画面はMacベースです。Windowsでも流れは同じです。

dockerを使うためには「Docker Desktop」というアプリをインストールする必要がありますが、

そのインストールをするために、まず「docker hub」のアカウントを作成します。

 

「docker hub」のページで、「ID」、「メールアドレス」、「パスワード」を入力します。

dockerインストール1

プランを問われるので、個人で利用するだけであれば無償のものを選択しましょう!

dockerインストール2

登録したメールアドレスに確認メールが送信されますので、

メールを確認して承認しましょう!

dockerインストール3

承認したら、下記画面が表示されます。

インストール画面へ進みます!

dockerインストール4

インストール画面へ移ったら、ダウンロードボタンを押します!

※Windowsであれば、Windows版の「Docker Desktop」をインストールします。

dockerインストール5

インストール処理を進めましょう!

※Windowsであれば画面が違いますが、ボタンを押して進めるだけです!

インストールが完了したら、再起動が求められるかもしれません。

その場合は再起動しましょう!

dockerインストール6

インストールはこれにて完了ですが、

dockerにログインできるか確認してみましょう!

ターミナルを起動します。

※Windowsであれば「Power Shell」でOKです!

dockerインストール7

起動したら「docker login」と入力して、「Enter」を押します!

dockerインストール8

「ユーザ名」と「パスワード」を聞かれるので、

最初に登録した「ユーザ名」と「パスワード」を入力します。

dockerインストール9

「Login Succeeded」と表示されれば成功です!

dockerインストール10

※もしログインがうまくいかなかった場合は、ターミナルでなく、
「docker desktop」を起動して、ログイン処理をしてみてください。

 

このログイン処理後に、実際にコンテナを作成するコマンドを入力していきます!

この続きは次回の記事で!

まとめ:dockerとは?

ここまでの話をまとめます。

まとめ

dockerとは、

「開発環境や実行環境を簡単に作れて、その環境を簡単に複製できる!」

「仮想化との違いは軽量であること!」

dockerのコンテナは、

「docker image」から作られる!

コンテナを更新したら「docker image」を作ることができる!

「docker image」は「docker file」という設計書から作られる

「docker image」は「docker hub」で管理できて、他の人も使えるようにできる!

 

「簡単に説明する!」と言っておきながら難しくなってしまいました。。

やはり実際に動かしながら説明しないと、わかりづらいですね。。

 

次回の記事で、

実際にdockerを使ってプログラミングをする開発環境(データサイエンティスト用のPython環境)を作ってみたいと思います。

実際に作っている流れを見てみることで、本記事の理解も進むと思います。

 

dockerはこれからIT業界で生きていくには、必要不可欠です。

dockerの基礎知識を身に付けて、活用できるようになりましょう!

 

※次の記事へ

dockerでPython環境構築
dockerでPythonの環境構築をする!データ分析環境「Jupyter Lab」を起動するまで!

dockerでプログラミングの環境を作れることはわかったけど、どんな感じで作るんだろう? 実際に作る流れを見たいな。。   こんにちは、古賀です!   本記事では、 はてな 「do ...

続きを見る

おすすめ記事

eSportsプラットフォームSPFans 1

  こんにちは、古賀です!   本記事では、わたしが個人開発したWEBサービス はてな eSportsプラットフォーム「SPFans」 の紹介をします。   以前に紹介し ...

成長するエンジニア 2

  エンジニアになったけど、いまいち成長を感じられないなぁ。。 作業スピードも品質も平凡。 この先成長していけるんだろうか。。   こんにちは、古賀です!   エンジニア ...

道のり 3

※本記事は、各記事のまとめ記事です。   こんにちは、古賀です!   本記事では、 「プログラミング未経験者がエンジニアとして働き、 年収1000万に到達するまでの道のり」 をご説 ...

プログラミングスクール 4

  プログラミングを本格的に勉強して仕事に繋げていきたいけど、 プログラミングスクール多すぎる。。 どういう目線で選べばいいんだ。。   こんにちは、古賀です。   プロ ...

-エンジニア, データサイエンティスト
-,

Copyright© Koga Masao's LifeBlog , 2024 All Rights Reserved.