概要説明とセットアップ¶
重要
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
- コンテナをデタッチド・モード (バックグランドの処理)で実行 -p 80:80
- コンテナ内のポート 80 に対し、ホスト上のポート 80 を割り当てる(マップ する)。チュートリアルにアクセスするにはウェブブラウザを開き、http://localhost:80
に移動する。ホストマシン上で既にサービスがポート 80 をリッスンしている場合、他のポートの指定が必要です。たとえば、-p 3000:80
を指定すると、チュートリアルにアクセスするにはブラウザでhttp://localhost:3000
を通します。docker/getting-started
- 使用するイメージの指定
Tip
コマンド全体を短くするために、1文字のフラグは連結できます。例として、先ほどのコマンドは、このように書き換えられます。
$ docker run -dp 80:80 docker/getting-started
Docker ダッシュボード¶
遠くへと進む前に、 Docker ダッシュボードに焦点をあて、マシン上でのコンテナ実行について素早く目を通したいと思います。Docker ダッシュボードは Mac 、 Windows 、 Linux で利用できます。これを使えばコンテナのログに素早くアクセスでき、コンテナ内でシェルが操作でき、コンテナのライフサイクル(停止、削除、等)の管理が簡単になります。
ダッシュボードにアクセスするには、 Docker デスクトップのマニュアル にある手順に従ってください。ダッシュボードを開いたら、このチュートリアルで実行しているように見えるでしょう。コンテナ名( jolly_bouman
)はランダムに作成されます。そのため、以下の画像とは名前が異なるでしょう。
コンテナとは何?¶
それでは、コンテナを実行するのですが、コンテナとは何でしょうか? 簡単に言えば、コンテナとはマシン上でサンドボックス化したプロセスであり、ホストマシン上にある他すべてのプロセスから
実行可能なイメージの
実体 。Docker API や CLI を使ってコンテナの作成、開始、停止、移動、削除ができます。ローカルマシン上や、仮想マシン上えも実行でき、クラウドにもデプロイできます。
可搬性 があります(多くの OS で実行可能です)。コンテナはお互いに隔離され、それぞれが自身のソフトウェア、バイナリ、設定を使って実行します。
コンテナ・イメージとは何でしょうか?¶
コンテナの実行時、コンテナは隔離されたファイルシステムを使います。この特別なファイルシステムは コンテナ・イメージ によって提供されます。イメージにはコンテナのファイルシステムも含みますので、アプリケーションを実行するために必要な全てを含む必要があります。たとえば、全ての依存関係、設定、スクリプト、バイナリ等です。また、このイメージには環境変数、デフォルトで実行するコマンド、メタデータのような、他の設定も含みます。
イメージに関する深掘りは、後のレイヤ化、ベストプラクティス等のトピックで扱います。