Lesson 2

環境構築

Lesson 2 Chapter 1
Docker Desktopのインストール

Lesson2では、環境構築や設定の確認を行います。Dockerを使用するためには、Docker Desktopのインストールが必要になります。

Docker Desktopとは

Lesson1でも触れましたが、DockerはLinux上で動作するコンテナ仮想化技術の1つです。WindowsやMacで使用する場合は、Linux仮想マシンのセットアップをしなければなりません。

Docker Desktopの中心となる機能は、このLinux仮想マシン(LinuxKit VM)の提供です。本来必要となるホストOSの違いによる面倒な設定を全て行なってくれます。

Docker Desktopがなければ、そのような仮想マシンの用意からホストOSとコンテナ間でのファイルシステムやネットワークの連携など多くの環境構築作業が発生します。

さらに、Docker DesktopにはDockerでの開発に必要なツールが一通り含まれています。

Docker Desktopに含まれているもの

それぞれの詳細については割愛しますが、以下のものが含まれています。

  • Docker Engine
  • Docker CLI client
  • Docker Buildx
  • Exntensions
  • Docker Compose
  • Docker Content Trust
  • Kubernets
  • Credential Helper

Docker Desktopは基本的にはデフォルトの設定で正しく安全に動作されるように構成されており、インストールするだけで開発環境が整うようになっています。

注意事項

Docker Desktopは個人や教育目的の利用は無料ですが、商用利用(従業員が 251 人以上、または、年間収入が 1,000 万米ドル以上)では有料契約が必要になります。

Docker Desktopのインストール

Docker Desktop for Windowsのインストール要件

インストールに必要なシステム要件の詳細はこちらのWSL2バックエンドの項をご確認下さい。

まず、インストール前の準備として以下の2つの作業が必要になります。それぞれリンク先の手順を参考にして行なって下さい。

  1. WSL2のインストール(手順はこちらから)
  2. Linux カーネル更新プログラム パッケージ(手順はこちらから)

こちらが済んだ方は以下の手順でDocker Desktopをインストールしていきましょう。

まずは、公式サイトにアクセスします。①Download Docker Desktop Windowsになっていることを確認してインストーラーをダウンロードして下さい。

image_2_2_1.png

フォルダに以下のアイコンのインストーラーがあると思いますので、ダブルクリックで起動します。

image_2_2_2.png

以下の画面が起動します。インストール完了後にデスクトップにショートカットが必要な方は②Add shortcut to desktopにチェックを入れて下さい。

image_2_2_3.png

インストールが完了したので、③のボタンをクリックしてインストーラーを終了します。

image_2_2_4.png

デスクトップにショートカットを作成した方はそちらから、されていない方は④からDocker Desktopを検索して⑤起動します。

image_2_2_5.png

利用条件などを確認したら、⑥Acceptをクリックします。

image_2_2_6.png

Docker Desktopが起動します。最初の起動時は以下のような画面がでます。2分ほどのチュートリアルを行えますが、不要な方は⑦Skip tutorial、体験したい方は⑧Startをクリックして下さい。

image_2_2_7.png

最後に以下のダッシュボード画面が起動できればインストール完了です。

image_2_2_8.png

次のchapterでは設定の確認を行います。

Lesson 2 Chapter 2
Docker Desktopの設定を確認

このchapterでは設定の確認を行なっていきます。

①をクリックして設定画面を開きましょう。

image_2_2_1.png

Generalタブ

GeneralタブではDockerの起動やその他全般的な内容の設定を行います。いくつかピックアップして解説しますが、基本的にはデフォルトのままでも使用に問題はありません。

image_2_2_2.png

②Start Docker Desktop when you log inにチェックを入れると、パソコンの起動時に自動的にDocker Desktopを起動するようになります。

③Choose Theme for Docker DesktopはGUIの見た目を変更します。

④Send usage statisticsにチェックを入れると、利用統計情報(エラー報告や利用データ情報)の送信を自動的に行うようになります。

⑤Show weekly tipsにチェックを入れると、Docker Desktopの操作時にポップアップで操作説明を表示することがあります。有用な情報が見つかるかもしれませんが、不要であればチェックを外して下さい。

⑥Open Docker Dashboard at statupにチェックを入れると、Docker Desktop起動時にダッシュボードを自動的に開くようになります。ダッシュボードは開発時に頻繁に操作するものでもありませんので、タブに開かれるのが邪魔だと感じる人はオフにして下さい。

ダッシュボードが閉じた状態で再度開きたい場合は、⑦をクリックして、⑧のDockerアイコンをクリックすると再度起動します。

image_2_2_3.png

Docker Desktopの起動確認

ダッシュボード画面が開いていなくてもDocker Desktopが起動していれば、Dockerを使用できます。⑧のアイコンを右クリックして⑨Docker Desktoop is runningとなっていればDocker Desktopが起動しています。停止したい場合は⑩Quit Docker Desktopで終了させましょう。

image_2_2_4.png

Resourcesタブ

Resourcesタブでは、CPU ・メモリ・ディスク・プロキシ・ネットワークなどの設定を行えます。しかし、設定が可能な項目は対象OSや同じWindowsでもモードの違いで異なります。

以下のMac版でのResources画面の設定項目をご覧下さい。

image_2_2_5.png

Advanced項目でホストマシン上で利用可能なCPUのプロセッサ数やメモリの容量などを設定できるようになっています。

しかし、このLessonではWindowsのWSL2モードでDockerを使用していますので以下のような画面になっていると思います。

image_2_2_6.png

WSL2モードではリソースの制限はWindows側で行うようになっているため、wslconfigファイルによって設定を行なって下さいとあります。

以下で変更手順を例として紹介しますが、実際に行う必要はありません。

wslconfigの設定

リソースの変更をする前に現状の設定を見ておきましょう。

PowerShellを立ち上げて⑪docker infoコマンドを実行すると⑫CPUコア数8、メモリ容量約4GBになっていることが確認できます。

image_2_2_7.png

それではwslconfigファイルを作成・編集して設定を行います。

wslconfig ファイルは、C:\Users\ユーザ名\.wslconfig にあります。ない方は作成し以下のようにします。

.wslconfig
[wsl2]
memory=2GB
processors=4
                    

PCを再起動してDocker Desktopを立ち上げます。再度docker infoコマンドを実行してみましょう。

⑬CPUコア数4、メモリ容量約2GBに設定が変更できました。

image_2_2_8.png

例ではCPUとメモリの変更を行いましたが、その他のwslconfigの細かな設定を行う場合はこちらをご覧ください。

設定変更を行うケース

Docker Desktop使用時にファンがうるさくなるときは、CPUの負担が大きくなっているか、wslのメモリ割り当てが多くPC側でメモリ不足になりスワップが発生していることが原因かもしれません。メモリやCPUコア数の設定を変更すると改善される場合があります。

Lesson 2 Chapter 3
コンテナの実行

インストールと設定が完了したところで実際にdockerを使用してコンテナを実行してみましょう。

docker runコマンド

チュートリアルではおなじみのHello WorldをDockerの世界でも体験してみます。

PowerShellを立ち上げてdocker run hello-worldを実行してみて下さい。

image_2_3_1.png

Hello from Docker!が出力されました

コマンドの実行により、②Dockerが行ったことが書かれていますので見ていきましょう。

image_2_3_2.png docker run hello-worldによってDockerが行ったこと

① Docker clientがDocker deamonに命令を出します

Docker clientというのは、docker runや先ほど設定の確認のときに実行したdocker infoなどのdocker xxxという形で実行したプロセスのことです。

Docker daemonは実行ステップ全ての主語になっている通り、Dockerの本体と呼べるものです。普段は私たちがDockerを使用するときはDocker CLI clientを通してDocker daemonを実行していることになります。

② 命令を受けたDocker daemonがhello-worldという名前のイメージをDocker Hubから取得します

Docker Hubについては次のLesson3で学習します。ここでは、いろいろなイメージが保存されている場所だと考えてください。

③ Docker daemonが取得したイメージから新しいコンテナを作成し実行します

取得したイメージを元にコンテナの作成を作成し、実行されます。

④ Docker daemonがコンテナの実行によって得られた出力をPowerShellに表示します

"hello-wolrd"イメージによって作成されたコンテナは、メッセージの出力を行うだけのものです。メッセージを出力し、役目を果たしたらコンテナが終了します。

Docker Desktopダッシュボード画面

それでは、docker run hello-worldコマンドの実行によって取得されたイメージと作成されたコンテナをDocker Desktopのダッシュボード画面で確認してみましょう。

image_2_3_3.png

③Imagesをクリックすると、イメージの一覧が表示されます。④hello-worldという名前のイメージが取得されていることが確認できます。

image_2_3_4.png

⑤Containersをクリックすると、コンテナの一覧が表示されます。⑥hello-worldを元に作成されたコンテナがあることを確認できます。コンテナ名は「frosty_swanson」となっていますが、これはコンテナ作成時にDockerによってランダムに割り当てられた名前になります。

まとめ

Lesson2ではDocker Desktopのインストールから試しに簡単なコマンドの実行まで行いました。

docker run hello-worldではDocker clientやDocker daemonが登場しましたが、これらが実行できたのはDocker DesktopにDocker CLI clientやDocker Engine(Docker daemon)が含まれているからなのです。

Docker Desktopのインストールによって、これらの開発に必要なツールが整ったところで次のLessonに進みましょう。