概要
ようこそ! あなたが Docker を学ぼうとしているので、私たちはとてもうれしいです。
このガイドでは順を追った手順に従い、Docker の始め方を学びます。このガイドで学び、できるようになるのは以下の項目です。
イメージをコンテナとして構築と実行
Docker Hub を使ったイメージ共有
データベースを持つ複数のコンテナを使う Docker アプリケーションのデプロイ
Docker Compose を使ってアプリケーションを実行
ガイドに進む前に、コンテナとイメージについて学ぶべきです。
コンテナとは何?
簡単に言えば、 :ruby:`コンテナ <container>` とはマシン上でサンドボックス化したプロセスであり、ホストマシン上にある他すべてのプロセスから :ruby:`隔離 <isolate>` されています。この隔離とは カーネルの名前空間と cgroup の活用であり、長らく Linux に存在する機能です。Docker はこれらの :ruby:`能力 <capability>` を、分かりやすく簡単に使えます。コンテナについてまとめますと、次のようになります:
イメージの実行可能な :ruby:`実体(インスタンス) <instance>` 。Docker API や CLI を使い、コンテナの作成、開始、停止、移動、削除ができます。
ローカルマシン上や仮想マシン上で実行できるのに加え、クラウドにもデプロイできます。
:ruby:`可搬性(ポータビリティ) <portability>` があります(多くの OS で実行できます)。
コンテナはお互いに隔離され、実行にはそれぞれが自身のソフトウェア、バイナリ、設定を使います。
コンテナ イメージとは何でしょうか?
コンテナを実行したら、コンテナは隔離されたファイルシステムを使います。この特別なファイルシステムは :ruby:`コンテナ イメージ <container image>` によって提供されます。イメージにはコンテナのファイルシステムが含まれており、アプリケーションの実行に必要な全てを含む必要があります。例えば、全ての(アプリケーションを実行するために必要なパッケージ等の)依存関係、設定ファイル、スクリプト、バイナリ等です。また、このイメージには環境変数、デフォルトで実行するコマンド、メタデータのような他の設定も含みます。
イメージに関して、このガイドの後のレイヤ化、ベストプラクティス等のトピックで深掘りします。
注釈
chroot を熟知していれば、コンテナとは chroot の拡張バージョンと考えてみましょう。ファイルシステムとは、単にイメージから由来します。ですが、コンテナの場合は、単純に chroot の使用ではできない付加的な隔離を追加します。
次のステップ
このセクションでは、コンテナとイメージについて学びました。
次のセクションでは、アプリケーションをコンテナ化しましょう。
参考
- Orientation and setup