【Docker入門】Dockerって何?何が便利で流行っているのか?技術ライターが仕組みを解説!
Summary
TLDRこの動画は、Dockerという隔離された実行環境を提供するソフトウェアについて説明しています。Dockerは、Linuxベースの環境でコンテナと呼ばれる隔離された空間を作成し、そこにアプリケーションとその実行に必要な環境を1つのパッケージとしてまとめることができます。これによりアプリケーションの移植性が高まり、開発環境や本番環境での動作の一貫性が保たれます。また、Windowsでも動作可能なDockerデスクトップを使えば、WindowsからLinuxアプリケーションを実行できるメリットもあります。Dockerは開発、テスト、CI/CDなど様々な場面で活用されています。
Takeaways
- 🐳 Dockerは、プログラムを隔離した環境(コンテナ)で実行するための仕組みです。
- 📦 Dockerイメージからコンテナを作成し、そのイメージには実行に必要なすべてのファイルが含まれています。
- 🌐 各コンテナには固有のネットワークとファイルシステムが割り当てられ、相互に影響を与えません。
- ✨ イメージさえ作っておけば、開発環境や本番環境で全く同じ状態で実行できます。
- 🚀 DockerHubからイメージをダウンロードし、簡単にサーバーソフトを起動できます。
- ♻️ コンテナの作成と削除が容易なため、試行錯誤しやすくなります。
- 🐧 本来はLinux環境でのみ動作しますが、Docker Desktopを使えばWindows/MacOSでも利用可能です。
- 👨💻 開発の現場ではDockerイメージを作成し、チームメンバーで共有して同一環境を実現します。
- 📚 プログラミング学習の場面でも、Dockerを使った環境構築が一般的になってきました。
- ⚙️ CI/CDパイプラインでもDockerが活用され、テスト環境の構築や本番デプロイが容易になります。
Q & A
Dockerとは何ですか?
-Dockerは、プログラムを隔離して実行するための環境です。この隔離された実行環境のことをコンテナと呼びます。Dockerは主にLinux環境で動作します。
コンテナの特徴は何ですか?
-コンテナは、ディスクやネットワークが分離されているため、他のコンテナに影響を与えずに実行できます。コンテナ内外の通信やファイルアクセスには明示的な設定が必要です。
Dockerの主なメリットは何ですか?
-Dockerの主なメリットは、1)隔離されているため他のシステムに影響を与えない、2)イメージから簡単に同じ環境を作れる、3)イメージを共有できるため誰でも簡単に利用できる、4)Windows/Macでも動作する、などがあります。
イメージとは何ですか?
-イメージとは、コンテナを作成するための基になるファイルのことです。イメージには、コンテナに含まれるファイルや実行するプログラムなどが含まれています。
DockerHubとは何ですか?
-DockerHubは、様々な公開済みのイメージが登録されているサービスです。オフィシャルなイメージや個人開発のイメージなどが公開されています。
開発での利用シーンを教えてください。
-開発では、開発したものを本番環境に納品する際にイメージとして配布したり、チーム内で同じ開発環境のイメージを共有して使ったりすることがあります。
プログラミング学習での利用シーンを教えてください。
-プログラミング学習の場面でも、Dockerを使って環境を作ることがよくあります。Docker環境を使えば、パソコンの環境に影響を与えずに学習環境を構築できます。
CI/CDにおけるDockerの利用シーンを教えてください。
-CI/CDでは、テスト環境の構築や本番環境へのデプロイにDockerが使われます。Dockerを使えば、毎回まっさらな状態から効率的にテストでき、本番環境への反映も簡単になります。
WindowsやMacでDockerを使うにはどうしたらいいですか?
-WindowsやMacでDockerを使うには、Docker Desktopをインストールする必要があります。Docker Desktopには、Linuxのシミュレーションソフトが含まれており、その上でDockerが動作します。
Dockerの主な利用シーンは何ですか?
-Dockerの主な利用シーンは、1パッケージ化が必要な場合や、同じ環境を再現したい場合、そしてコンテナを自在に作成・削除できる利点を活かしたい場合などです。
Outlines
🐳 Dockerの概要と特徴
このパラグラフでは、Dockerの基本的な概念について説明しています。Dockerはコンテナと呼ばれる隔離された実行環境を作り出すためのプログラムで、プログラムとその実行に必要なライブラリなどをまとめて1つのイメージとしてパッケージ化することができます。コンテナはLinuxベースで動作し、それぞれがネットワークやディスクを分離しているため、相互に影響を与えることがありません。このような隔離された環境を作り出すことで、各プログラムの動作を分離し、干渉を防ぐことができます。
🚀 Dockerの主要機能とメリット
このパラグラフでは、Dockerの主要な機能とメリットについて説明しています。Dockerはコンテナをイメージから作成します。イメージにはプログラムの実行に必要なファイルがすべて含まれているため、イメージさえ作成しておけば、開発環境や本番環境など、様々な環境で同じ状態でプログラムを実行できます。また、コンテナは作成と削除が簡単なので、試行錯誤が容易です。さらに、DockerHubというイメージレジストリがあり、誰でも公開されているイメージをダウンロードして利用できます。これにより、サーバーソフトウェアの構築が非常に簡単になります。
🖥️ Dockerの活用シーン
このパラグラフでは、Dockerの活用シーンについて説明しています。Dockerは基本的にLinuxで動作しますが、Docker Desktopを使えばWindows/MacOSでもLinux環境を利用できます。これにより、これまでLinuxでしか利用できなかったソフトウェアをWindows/MacOSで実行できるようになります。Dockerは開発、チームでの共有環境構築、プログラミング学習、CI/CDなど、様々な場面で活用できます。特に、環境の分離や再現性の高さから、テストや本番環境への適用が容易になるというメリットがあります。
✨ Dockerのまとめと導入の提案
最後のパラグラフでは、Dockerの特徴とメリットをまとめています。Dockerはコンテナという隔離された実行環境を作ることで、プログラムをポータブルに移植できるようになります。隔離された環境なので他への影響がなく、試行錯誤しやすくなります。また、イメージという形でプログラムをパッケージ化できるので、様々な環境で同じ状態で実行できます。このようなメリットから、開発、テスト、本番環境での活用が期待できます。講師は最後に、Dockerの利用を勧めています。
Mindmap
Keywords
💡Docker
💡コンテナ
💡イメージ
💡隔離
💡ポータビリティ
💡Linux
💡ライブラリ
💡DockerHub
💡CI/CD
💡開発環境
Highlights
Dockerは隔離された実行環境であり、Linuxで動く。
隔離された環境のことをコンテナと呼び、それぞれ固有のネットワークとディスクが割り当てられる。
コンテナの外にアクセスするには、起動時に明示的な設定(穴を開ける設定)が必要。
コンテナはイメージから作られ、イメージはDockerHubに登録されている。
イメージさえ作っておけば、様々な環境で同じものを実行できる。
コンテナの作成・削除が簡単で、試行錯誤しやすい。
DockerHubにはオフィシャルやユーザー作成のイメージが登録されている。
dockerコマンドを使えば、イメージをダウンロードして簡単にサーバーソフトを実行できる。
Docker Desktopを使えば、WindowsやMacでもLinuxの開発環境を使える。
Dockerのメリット1: 隔離されているので他のシステムに影響を与えない。
Dockerのメリット2: イメージ化でファイルのコピー漏れの心配がない。
Dockerのメリット3: Windows/MacでLinuxの環境が使える。
開発の場面でDockerイメージを使って納品することが多い。
チーム開発でメンバー全員が同じDockerイメージを使うことがある。
プログラミング学習でもDocker環境を使うことが多くなった。
Transcripts
皆さんこんにちはSE+
IT教育チャンネルナビゲーターの寺井
ですということで本日は大沢講師をお招き
して
プチ講義を行っていただきたいと思います
それでは大澤さんよろしくお願いしますご
紹介いただきました
技術ライターの大澤です今日は
Dockerって何何が便利なのという
ことでドッカーが流行っている理由その
ポイントについてお話ししていきます
Dockerというのはどっかという会社
が開発したプログラムを
隔離して実行するための
環境ですこうした仕組みや読解以外にも
あってですねコンテナと呼ばれる技術が
使われていますロッカーのロゴはこんな
感じのクジラの上にコンテナが乗っかって
いるようなものなんですけどもこういう
絵柄であるのはこれが理由ですこの
コンテナの中にはプログラム本体だけでは
なくてですねライブラリとかプログラムの
実行に必要なものも全部
含めて1パッケージにできます
ロッカーには
Linuxの技術が使われていて
Linux環境で動きます
Linuxっていうのはサーバーでよく
使われる
OSですねといろいろ言ってますけれども
いずれにしても特化というのはプログラム
を実行するための
Linuxの環境の一つです
そこでどっかについてお話を始める前に
Linuxでプログラムを実行するという
ところについて見ていきたいと思います
プログラム動かすにはそのプログラムを
コンピューターにインストールしますこの
インストールという作業はプログラムを
コピーするだけではなくてそれに付随する
いくつかのファイルをコピーします
その
代表的なものがライブラリです
ライブラリというのはいくつかの機能を
提供するもので例えば画像やPDF
いろんな計算データベースなどいろんな
機能を提供するものがあります
こうした機能を使ったプログラムは一緒に
ライブラリをコピーしないと動かないと
いう事情があります
このライブラリなんですけれども
コンピューター全体で共有して使います
例えばこの図にありますように一つの
コンピューターにプログラムAと
プログラムBをインストールする場合同じ
機能を使っている場合はライブラリは1つ
だけでそれを共有するというような動きに
なりますここでプログラムBを
アップデートしたとしましょうそれに伴っ
てプログラムBが使っているライブラリも
アップデートされる可能性があります
そうするとですねプログラムAもその
アップデートしたライブラリを使うことに
なりますその結果
バージョンが違うのでプログラムAの方が
ですね不具合を起こすというようなことが
ありえるわけですねじゃあどうすればいい
のという話になりますがここで最初にお
話しした
隔離の話になります
そもそもプログラムAとプログラムBとで
ライブラリとかそういうものを共有する
から問題なのであって別々の場所に分ける
実際にディスクを分けてしまえば問題が
なくなりますよねここがロッカーの原点
です
ロッカーはこのようにプログラムを隔離し
て実行することで
互いに影響がないようにする仕組みです
その仕組みとメリットについてもう少し
深く見ていきますDockerはそれぞれ
の実行環境を確立する仕組みです利用する
にはドッカーエンジンというソフトを
インストールしますそうするとその上で
隔離した環境が使えるようになります
隔離した環境というものがですねまあ冒頭
でも少し触れたコンテナというものです
それぞれのコンテナは
ディスクが分かれていて
互いに影響を受けないのはもちろんです
けれども
ネットワークも別々に分かれていますここ
ではIPアドレスを
172-1-2-3などと書いてますけど
これは環境によって異なりますけれども
いずれにしてもそれぞれ別のIPアドレス
が割り当てられ
ますこれがdカードのメリットの一つ目
です
それぞれが
隔離されるので
互いの影響がありませんあるプログラムが
ファイルを書き換えてしまったために別の
プログラムが動かなくなるそういった事態
がなくなりますところで
図を見ると1台のサーバーの中に
複数のサーバーがあるというように見え
ますそうするとですね
過疎サーバーと何が違うのという話もなり
かねませんただドッカーはですねあくまで
も
Linuxの自己環境を確立するだけです
それぞれのコンテナの中には
Linuxは含まれていませんそれから
それぞれのコンテナの中では基本的に一つ
のプログラムしか動きません
たくさんのプログラムを動かしたいので
あればそれぞれコンテナを分けて使うと
いうやり方をします例えばWebサーバー
とデータベースサーバーのソフトそれぞれ
別のコンテナで動かすというのやり方です
ねこれがdカード最大の特徴であり本当に
実行環境を分けるそれだけですね
仮想サーバと違ってそれぞれ
エミュレーションしてるわけではないので
とても高速ですただこの図からわかるよう
に前提として
Linuxを使っていますそのため
Linuxの環境でしか動きません
繰り返しになりますけれどもそれぞれの
コンテナは
完全に
隔離されています
コンテの中からコンテナの外にアクセス
することはできませんこれは
ネットワークもファイルも同様です例えば
コンテナの中で何かプログラムを動かすと
しますとそのプログラムに外から通信する
ということはできませんなぜなら
隔離されているからですね
でこのようにですねもしプログラムに外
から通信したいのであれば明示的な設定が
必要ですどういうことかと言いますと
具体的に外から通信できるように
穴を開けるようにしてコンテナを動かすと
いう形ですねファイルについても同様です
コンテナの内側でしかそのファイルに
アクセスできないのでもしコンテナの外に
アクセスしたい時には
穴を開けてどこかから外に向けてアクセス
できるようにするという形です今回はどこ
かの深い話をするのが目的でないので割愛
しますけれども明示的に設定しない限りは
ですねどこにもアクセスできないという
ことをちょっときちんと理解するという
ことが大事ですでそれでは当然使い物に
ならないので実際には目的ごとにこうした
通信とかリスクの設定とかをしなければ
ならないというところがどっかを使う上で
の大きなポイントになりますではではこの
コンテナどうやって作るのかと言いますと
実はですねこれは
イメージと呼ばれるものから作ります
イメージは一つのファイルででして構成さ
れていってその中にはコンテナの中に
含まれるファイルとかそれからコンテナを
作った時に実行するプログラムの名前とか
ですねそこに渡すデータとかそういった
ものが意識含まれていますこれを
ダウンロードして展開して実行するそう
するとコンテナができるという仕組みです
でここでメリット2つ目です
イメージから作るということはこの
イメージの中にプログラムの実行に必要な
ファイルを全部まとめて含めておけばいい
というわけですですのでもうコピーモデル
とかそういうのがなくて本当に
イメージの中に
ワンパッケージとしてまとめるということ
ができます
イメージさえ一度作っておけばですねそれ
をいろんなところで動かせます例えば1個
イメージを作っておいてそれを開発者の
コンピュータで動かすそれから開発
サーバーで動かすそれから本番サーバーで
動かすとかですねまあ一旦イメージを作っ
ておけばそれをもとに様々な
コンピューター上でいくつでも動かすこと
ができます
物価がない頃はですね本番サーバーに持っ
ていくときはファイルのコピー漏れがない
かとかそれから間違って上書きしていない
かとかちょっと事前に注意するとか
いろいろ配慮する必要があったわけです
けれどもどっかを使えばですねそうした
心配がなくまあ一発しかもどの環境でも
全く同じ状態で動くこれはかなり楽ですよ
ねそしてコンテナはいらなくなってばすぐ
に消すことができます
隔離されているので消しても他に影響が
あるということはありませんつまり作っ
たり消したりというのが自在ということ
ですねこれはですねあのいろいろ試行錯誤
しやすいですしよくわからなくなって
しまったとかそういう場合はですね決して
最初からやり直すというのも簡単ですただ
当然ですけれどもコンテナを消せばその
コンテの中に
含まれているデータというのは当然全て
消されますとか
繋がります
さてさてこのイメージですけれども自分で
作るということも当然できます実際開発の
現場では実際に作ると思うんですけども
様々な人がですねすでに作ったイメージを
登録している場所というのがありますその
代表的なものがドッカーハブというサイト
ですこれはドッカー車が提供しているもの
でオフィシャルなものや個人が開発した
ものあとはそれを改良したものとかです
たくさんのイメージが置かれています
例えばアパッチとかエンジンXとか
MySQLなどよく使うソフトウェアの
イメージはすでにここに登録されています
どっかハブに登録されたイメージこちらは
誰でも利用できます利用するのはとっても
簡単です
ここに示しているようにですねロッカー
ランというコマンドを使うと
イメージをダウンロードして実行できます
つまりコンテナンスつまり本当に一つの
コマンドを実行するだけでサーバーの
ソフトが動いてしまうこれは第3の
メリットだと言えます簡単ですしサーバー
ソフトの設定方法など知らない人でも
サーバーを簡単に構築できるこれが
ロッカーの第3の電熱ですねこの図にある
ようにドッカーンエンジンXと一つやる
だけで自分のパソコンの中でエンジンXと
いうWebサーバーですけれどもこちらが
動くということですねさてこのドッカー
ですけれども先ほどから繰り返している
ようにLinuxで動かす実行環境という
形になります
ですからリラックスでしか動かないんです
けれども実はどっかデスクトップという
ソフトを使うとWindowsとか
MacOSとかで動かすこともできます
これはどういうことかというとですねd
カードデスクトップに
Linuxをシミュレーションするための
ソフトが入っていってその中でどこかが
動いというわけですねWindowsや
MacでDockerが動くということは
ですねWindowsMacでLinux
の開発ができるということですロッカー
ですストップをインストールすると
Linuxの特化を使って開発できるよう
になるですからそこでどっか
イメージを作ってそれをLinuxが動い
てるサーバー環境にコピーして使うという
ことが
できるこれも大きなロッカーのメリット
ですね開発するというところではなくても
WindowsとかMacで
Linuxが使えるというのはとても
大きなメリットになると思います実際は
Linuxだけでしか使わない使えない
ソフトというのも多いですね特に最近です
と例えば機械学習系のものとかは
Linuxを前提にしたものが
案外多いですねそうしたものもどっかを
使えばWindowsやMacで実行
できるという形になり
はいそれではまとめですDockerとは
隔離された実行環境です
Linuxで動きます
隔離された
環境のことをコンテナと呼びますそれぞれ
のコンテナには
固有のネットワークとリスクが割り当て
られますコンテナの外にはアクセスする
ためにはですね
起動時の明示的な設定穴を開ける設定です
ねそれが必要になりますそしてコンテナは
イメージから作ります
イメージはドッカーハブに登録されていて
簡単に誰でも使って起動することができ
ますそして
削除とかやり直しも簡単ですDocker
は基本的にはLinux用ですけれども
ロッカーデスクトップを導入するところで
WindowsとかMacでも使うことが
でき
こうした特徴を踏まえたドッカード
メリットはまずは隔離しているので同居し
ている他のシステムに影響を与えない壊さ
ないというところがメリットとして
挙げられますですからですね気軽に試し
たり実行したり消したりそういう試すこと
ができるというのがメリットですそして
ドッカーはコンテのイメージから作るわけ
ですけれども
イメージさえ作ってしまえば開発者もPC
とか開発サーバーそれから本番サーバー
様々な場面で同じもの全く同じものを実行
することができますファイルはすべて
イメージにワンパッケージ化されるので
コピーの漏れとかそういう心配もありませ
んそしてボッカーデスクトップを使う場合
はWindowsとかMacの中で
コンテナが動くつまり
Linuxの環境のソフトを
WindowsMacで動かすことが
これは本当にLinuxのコマンド
ちょっと使いたいというそんな場面で重宝
しますDockerが使える場面は様々
ですけれども1パッケージ化とやり直せる
という利点を活かしたいところです例えば
こうした場面でよく使われています一つ目
こちら開発のためですね開発したものを
本番機などに納品するような場面では
読解イメージとして1パッケージで使うと
いうことが多いですそれ以外にもですね
チームリーダーの人が開発者用のイメージ
を作ってそれをチームメンバーに配布して
そのコンテナで各自が同じようは同じ環境
でですよね開発していくということもよく
ありますそれから最近ではプログラミング
学習の場面でもよく使われますどっかを
使ってですねプログラミングの環境を作る
ことを前提に
作られている学習コンテンツというのも
珍しくないですね今までは
各自パソコンにプログラミング
環境をインストールしてもらったわけです
まあ例えばいろんな言語とかエディターと
かそういうのインストールしてもらった
わけですけれどもパソコンの構成によって
はですねうまくいかなかったりとか
そもそもインストールすることでパソコン
の通常の他の業務に影響が出てしまったり
とか何かが壊れてしまってですねという
ことがあったわけですドッカーではですね
そういうことがありませんしそれからまず
何よりですね勉強が終わったらきれ
さっぱりせるそういうのもメリットですね
そして最後はCICDの環境ですねCI
CDというのは継続的デリバリーとかそう
いうことですけれども一言で言うと作った
プログラムを自動でテストしてテストに
問題がなければ本番期に反映させるそんな
仕組みのことですこのテストの場面でどっ
かがよく使われますどっかを使えばですね
いつでもまっさらな状態からテストして
始められるので何度でもテストしやすい
テストする時に前の状態が残っ持ってい
ないそういったことで都合がいいからです
ねそして本番に反映するような場面でも
テストした後どっかのイメージを作って
それを本番機に反映させるだけで済むと
いうことも大きなメリットですドッカーは
このようにコンテナという
隔離された実行環境を作ることでそれを
そのまま別のところにコピーしたりとか
全部消してやり直したりとかそうした
ポータビリティを実現する技術です様々な
場面で便利に使えると思いますぜひ皆さん
使ってみてください
5.0 / 5 (0 votes)