概要説明とセットアップ

重要

Docker Desktop の利用条件変更

現在、大企業(従業員が 251 人以上、または、年間収入が 1,000 万米ドル以上 )における Docker Desktop の商用利用には、有料サブスクリプション契約が必要です。

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

このページでは段階的な手順に従って、Docker の始め方を学びます。このチュートリアルで、以下の内容を学べます。

  • コンテナとして、イメージの構築と実行

  • Docker Hub を使ったイメージ共有

  • データベースがある複数のコンテナを使う Docker アプリケーションをデプロイ

  • Docker Compose を使ってアプリケーションを実行

さらに、イメージ構築のベストプラクティスも学べます。これには、イメージのセキュリティ脆弱性を調べる(スキャンする)手順も含みます。

好きな言語を使用しているアプリケーションを、コンテナ化する方法の情報を探している場合は、 言語ごとの導入ガイド をご覧ください。

また、 Dockercon 2022 の映像を見るのも推奨します。以下の動画を再生するか、適切な動画セクションへのリンクを開きます。

Docker のダウンロードとインストール

このチュートリアルでは、みなさんのマシン上に Docker の現行バージョンをインストールしている状態を想定しています。もしも Docker をインストールしていなければ、以下から適切なオペレーティングシステムを選び、 Docker をダウンロードしてください。

Docker Desktop のインストール手順は、以下をご覧ください。

チュートリアルの開始

もう既にチュートリアルでコマンドを実行していたら、おめでとう! そうでなければ、コマンドプロンプトか bash ウインドウを開き、コマンドを実行しましょう。

$ docker run -d -p 80:80 docker/getting-started

いくつかのフラグが使われているのに気づくでしょう。それらの詳しい情報は、こちらです。

  • -d - コンテナを デタッチド・モード(detached mode) (バックグランドの処理)で 実行(run)

  • -p 80:80 - コンテナ内のポート 80 に対し、ホスト上のポート 80 を割り当てる( マップ(map) する)。チュートリアルにアクセスするにはウェブブラウザを開き、 http://localhost:80 に移動する。ホストマシン上で既にサービスがポート 80 をリッスンしている場合、他のポートの指定が必要です。たとえば、 -p 3000:80 を指定すると、チュートリアルにアクセスするにはブラウザで http://localhost:3000 を通します。

  • docker/getting-started - 使用するイメージの指定

ちなみに

コマンド全体を短くするために、1文字のフラグは連結できます。例として、先ほどのコマンドは、このように書き換えられます。

$ docker run -dp 80:80 docker/getting-started

Docker ダッシュボード

遠くへと進む前に、 Docker ダッシュボードに焦点をあて、マシン上でのコンテナ実行について素早く目を通したいと思います。Docker ダッシュボードは Mac 、 Windows 、 Linux で利用できます。これを使えばコンテナのログに素早くアクセスでき、コンテナ内でシェルが操作でき、コンテナのライフサイクル(停止、削除、等)の管理が簡単になります。

ダッシュボードにアクセスするには、 Docker デスクトップのマニュアル にある手順に従ってください。ダッシュボードを開いたら、このチュートリアルで実行しているように見えるでしょう。コンテナ名( jolly_bouman )はランダムに作成されます。そのため、以下の画像とは名前が異なるでしょう。

../_images/tutorial-in-dashboard.png

コンテナとは何?

それでは、コンテナを実行するのですが、コンテナとは何でしょうか? 簡単に言えば、コンテナとはマシン上でサンドボックス化したプロセスであり、ホストマシン上にある他すべてのプロセスから 隔離(isolate) されています。この隔離とは カーネルの名前空間と cgroup の活用であり、長らく Linux に存在する機能です。Docker はこれらの 能力(capability) を、分かりやすく簡単に使えるようにします。まとめると、コンテナとは:

  • 実行可能なイメージの 実体(instance) 。Docker API や CLI を使ってコンテナの作成、開始、停止、移動、削除ができます。

  • ローカルマシン上や、仮想マシン上えも実行でき、クラウドにもデプロイできます。

  • 可搬性(portability) があります(多くの OS で実行可能です)。

  • コンテナはお互いに隔離され、それぞれが自身のソフトウェア、バイナリ、設定を使って実行します。

注釈

ゼロからコンテナを作成するには

コンテナをゼロから構築する方法を知りたければ、 Aqua Security の Liz Rice による素晴らしいトークがあります。彼女は go でゼロからコンテナを作成します。トークではネットワーク機能や、ファイルシステム用のイメージの使い方、その他の高度なトピックを扱いません。ですが、コンテナの作り方について、非常に素晴らしく深く掘り下げています。

../_images/get-started2.png

コンテナ・イメージとは何でしょうか?

コンテナの実行時、コンテナは隔離されたファイルシステムを使います。この特別なファイルシステムは コンテナ・イメージ によって提供されます。イメージにはコンテナのファイルシステムも含みますので、アプリケーションを実行するために必要な全てを含む必要があります。たとえば、全ての依存関係、設定、スクリプト、バイナリ等です。また、このイメージには環境変数、デフォルトで実行するコマンド、メタデータのような、他の設定も含みます。

イメージに関する深掘りは、後のレイヤ化、ベストプラクティス等のトピックで扱います。

CLI リファレンス

この節で扱う全ての CLI コマンドに関する詳しいドキュメントは、以下のトピックをご覧ください。

参考

Orientation and setup

https://docs.docker.com/get-started/