Part 1:概要説明とセットアップ

ようこそ! 皆さんが Docker の使い方を学ぼうとしており、私たちは嬉しく思います。

このページでは段階的な手順に従って、Docker の始め方を学びます。また、 Dockercon 2020 の映像を見るのも推奨します。

../_images/get-started.png

このクイックスタート・トレーニングでは、次の方法を伝授します: このチュートリアルは6つのパートで構成されています。

  1. セットアップと概要説明、このページです。
  2. イメージの構築と実行
  3. イメージを Docker Hub で共有

Docker の概念

Docker とは開発者やシステム管理者が、コンテナでアプリケーションを **構築(build)、実行(run)、共有(share)**するためのプラットフォームです。アプリケーションをデプロイするために、コンテナを利用する事をコンテナ化( containerization )と呼びます。コンテナは新しくありませんが、コンテナを使えばアプリケーションのデプロイがより簡単になります。

ますますコンテナ化の人気が高まるのは、コンテナには以下の特長があるためです。

  • 柔軟(Flexible) :最も複雑なアプリケーションですらコンテナ化できます。
  • 軽量(Lightweight) :ホスト・カーネルをコンテナは活用・共有するので、システムリソースに関しては仮想マシンよりも効率的に扱えます。
  • 可搬性(Portable) :ローカルで構築し、クラウドにデプロイし、どこでも実行できます。
  • 疎結合(Loosely coupled) :コンテナは、コンテナ自身のことは自分で完結し、カプセル化しています。そのため、他の何らかの中断をしなくても、置き換えやアップグレードが可能です。
  • 拡張性(Scalable) :データセンタ内の至るところで、複製したコンテナの追加と自動分散が可能です。
  • 安全(Secure) :利用者による設定がなくても、コンテナは積極的な制限と分離(isolate)をプロセスに適用します。

イメージとコンテナ

基本的に、コンテナは何もしませんが、プロセスが走っています。このプロセスは、ホストと他のコンテナから隔離(isolate)し続けるために、複数のカプセル化する機能をプロセスに対して追加しています。コンテナ隔離(isolation)の最も重要な特長とは、各コンテナが自分自身のプライベート・ファイルシステムとやりとりできる点です。すなわち、このファイルシステムは Docker イメージ によって提供されます。イメージに含まれるのは、アプリケーションの実行に必要な全てです。たとえば、コード、バイナリ、ランタイム、依存関係、その他の必要なあらゆるファイルシステム・オブジェクトです。

コンテナと仮想マシン

コンテナは Linux 上でネイティブに実行し、ホストマシン上のカーネルを他のコンテナと共有します。コンテナは離れたプロセスを実行しますが、実行するもの以外でメモリを必要としないため、軽量になります。

コンテナスタックの例

一方で、 仮想マシン (VM)はハイパーバイザを通してホスト・リソースに仮想的にアクセスし、完全な "ゲスト" オペレーティングシステム実行します。一般的に、アプリケーションのロジックで何を消費するかによりますが、それよりも多くのオーバヘッドを仮想マシンでは受けます。

仮想マシンスタックの例

Docker 環境をセットアップ

Docker デスクトップのダウンロードとインストール

Docker Desktop は Mac や Windows 環境に簡単にインストールできるアプリケーションです。これにより、ものの数分でコーディングやコンテナ化を始められます。Docker Desktop にはコンテナ化したアプリケーションを、マシン上で直ちに構築、実行、共有するために必要な全てを含みます。

オペレーティングシステムに適切な手順に従い、Docker Desktop のダウンロードとインストールを行います。

Docker バージョンのテスト

Docker Desktop のインストールに成功したら、ターミナルを開き、 docker --version を実行し、マシン上にインストールした Docker のバージョンを確認します。

$ docker --version
Docker version 19.03.5, build 633a0ea

Docker インストールのテスト

  1. hello-world Docker イメージを実行し、インストールが正常に行われたかどうかを確認します。
$ docker run hello-world

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
ca4f61b1923c: Pull complete
Digest: sha256:ca0eeb6fb05351dfc8759c20733c91def84cb8007aa89a5bf606bc8b315b9fc7
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.
...
  1. docker image ls を実行し、マシン上にダウンロードした hello-world イメージが一覧にあるかどうか確認します。
  1. メッセージを表示して終了した hello-world コンテナ(イメージから生成)が一覧にあるかどうかを確認します。もしまだ実行中であれば、 --all オプションは不要です。
$ docker ps --all

CONTAINER ID     IMAGE           COMMAND      CREATED            STATUS
54f4984ed6a8     hello-world     "/hello"     20 seconds ago     Exited (0) 19 seconds ago

まとめ

この段階では、皆さんの開発マシン上に Docker Desktop をインストールし、初めてのコンテナ化アプリケーションを構築・実行し、セットアップが問題なかったどうかを簡単にテストしました。

参考

Orientation and setup
https://docs.docker.com/get-started/