Part 1:概要説明とセットアップ¶
ようこそ! 皆さんが Docker の使い方を学ぼうとしており、私たちは嬉しく思います。
このページでは段階的な手順に従って、Docker の始め方を学びます。また、 Dockercon 2020 の映像を見るのも推奨します。
このクイックスタート・トレーニングでは、次の方法を伝授します: このチュートリアルは6つのパートで構成されています。
- セットアップと概要説明、このページです。
- イメージの構築と実行
- イメージを 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 インストールのテスト¶
- 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.
...
docker image ls
を実行し、マシン上にダウンロードしたhello-world
イメージが一覧にあるかどうか確認します。
- メッセージを表示して終了した
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/