Dockerコンテナの使い方

Dockerコンテナの使い方
ノートパソコンでプログラミングをしている人の写真。

コンテナは、あらゆる Docker インストールの生命線です。コンテナは Docker プラットフォームの基盤として機能し、依存関係やバージョンの競合を気にせずにコンピューター上でサービスを実行できます。ここでは、Docker CLI ツールを使用して Docker コンテナを作成、管理、カスタマイズする基本について説明します。

Docker イメージを見つけて取得する方法

Docker コンテナは、元のシステムの残りの部分とは別にプログラムを実行できる特殊なタイプのソフトウェア環境です。これを実現するために、Docker は「ソフトウェア イメージ」を使用します。これは、コンテナの起動のベースとして機能するプログラムの静的コピーです。

イメージとコンテナを区別することで、必要に応じてソフトウェアを再作成し、適応させることができます。たとえば、「httpd」などのイメージから、「website1」と「website2」という 2 つの異なるコンテナを作成できます。

新しい Docker イメージを確認する最も簡単な方法は、次のsearchサブコマンドを使用することです。

CLI ツールから httpd Docker イメージを強調表示するターミナル。
Docker Hub Web サイトの httpd Docker イメージを示すスクリーンショット。

イメージをシステムにダウンロードするには、次のコマンドを実行します。

次のサブコマンドを使用して、新しいイメージがシステムに適切に追加されたことを確認しますimages

システムにインストールされた httpd Docker イメージを強調表示するターミナル。

Dockerfiles を使用して新しいイメージを構築する

Docker Hub から事前に構築されたイメージを取得する以外に、Docker CLI から直接イメージを構築することもできます。これは、既存のソフトウェア パッケージのカスタム バージョンを作成する場合や、新しいアプリを Docker に移植する場合に便利です。

これを行うには、まずホーム ディレクトリにビルド ファイル用のフォルダーを作成します。

お気に入りのテキスト エディターを使用して新しい Dockerfile を作成します。

新しい Dockerfile 内に次のコード行を貼り付けます。

カスタム Nginx イメージの Dockerfile 構成の例を表示するターミナル。

「sample-site」フォルダを作成し、それをコピーするか、基本的な HTML サイトを作成します。

新しい Dockerfile を保存し、次のコマンドを実行してシステム上でビルドします。

新しい Docker イメージが Docker イメージのリストに存在するかどうかを確認します。

ビルド サブコマンドから生成されたカスタム イメージを強調表示するターミナル。

既存のコンテナを使用して新しいイメージを構築する

Docker CLI ツールは、システムに現在存在するコンテナから新しいイメージを構築することもできます。これは、既存の環境で既に作業していて、現在のセットアップから新しいイメージを作成する場合に便利です。

これを行うには、コンテナが現在実行されていないことを確認します。

コンテナの名前の後にサブコマンドを実行しcommit、その後に新しい Docker イメージの名前を指定します。

Docker コンテナから新しいイメージを作成する commit サブコマンドが表示されているターミナル。

を実行して、新しい Docker イメージがシステムにあることを確認しますdocker images

システムにインストールされた Docker コンテナからの新しいカスタム イメージを強調表示するターミナル。

Dockerコンテナを実行および停止する方法

Docker イメージの準備ができたら、それを使用して最初のコンテナを作成できます。これを行うには、run実行するイメージの名前を続けてサブコマンドを使用します。

これは最初の Docker コンテナを実行する場合には有効ですが、この方法では現在のシェル セッションが引き継がれます。コンテナをバックグラウンドで実行するには、サブコマンド-dの後にフラグを追加しますrun

サブrunコマンドは、新しい Docker コンテナの動作を変更できるいくつかの追加フラグも受け取ることができます。たとえば、フラグを使用すると、--nameコンテナにカスタマイズ可能な名前を追加できます。

一方、--publishフラグを使用して、Docker コンテナにアクセスできるネットワーク ポートをリダイレクトできます。これは主に、コンテナが特権ポートを占有しないようにする場合に役立ちます。

カスタム Docker コンテナによってホストされている Web サイトを Web ブラウザーで開いているスクリーンショット。

次のコマンドを実行すると、システム内で現在実行中のすべての Docker コンテナを確認できます。

サブコマンドと同様にrunps動作を変更するいくつかのフラグも使用できます。たとえば、現在ダウンしているコンテナを表示するには、次の-aフラグを使用します。

実行中のコンテナをオフにするには、stopサブコマンドの後にコンテナ ID または Docker コンテナの名前を指定します。

現在実行中の Docker コンテナをオフにするプロセスを示すターミナル。

サブコマンドを再実行することで、停止したコンテナを再起動できますstart

Docker コンテナの一時停止と終了

Docker CLI ツールを使用すると、実行中のコンテナ プロセスを一時的に停止したり強制終了したりすることもできます。これは、Docker セットアップの問題をトラブルシューティングしていて、動作が不安定なコンテナを隔離または停止したい場合に役立ちます。

まず、実行して、docker psシステム内で実行中のすべてのコンテナを一覧表示します。

管理するコンテナの ID または名前を見つけます。

システムで現在実行中のカスタム Docker コンテナを強調表示するターミナル。

pause一時的に停止するコンテナの名前を指定してサブコマンドを実行します。

次のサブコマンドを実行すると、中断されたプロセスを再開できますunpause

不正な動作をしているプロセスを停止するには、killコンテナの名前の後にサブコマンドを実行します。

Dockerコンテナを検査する方法

コンテナの複雑な詳細を把握することは、Docker スタックの健全性を維持する上で非常に重要です。これにより、潜在的な問題をすばやく確認することができ、デプロイメント全体を修正するかやり直すかの違いが生じる可能性があります。

Docker コンテナの概要を確認するには、次のinspectサブコマンドを実行します。

これを行うと、コンテナ全体の現在の状態を説明する長い JSON 文字列が出力されます。出力を jq にパイプするか、組み込み-fフラグに続けて出力したい JSON オブジェクトを使用することで、これを絞り込むことができます。

実行中の Docker コンテナ上の、inspect サブコマンドのフィルター フラグを表示するターミナル。

コンテナログをターミナルに出力する

それ以外にも、現在実行中の Docker コンテナのログを追跡して印刷することもできます。これは、サービスの現在の動作を確認し、STDOUT に返される出力を確認する場合に役立ちます。

これを行うには、logs サブコマンドに続けてコンテナの名前を実行します。

また、フラグを指定した logs サブコマンドを実行して--follow、Docker サービスの継続的なログを作成することもできます。これは、tail -fUNIX パイプの末尾で実行するのと似ています。

Docker コンテナの継続的なログを表示するターミナル。

他のサブコマンドと同様に、さまざまなフラグを追加して、Docker コンテナのログの出力をカスタマイズすることもできます。たとえば、フラグは、--timestampsコンテナが STDOUT に送信するすべてのメッセージに詳細なタイムスタンプを追加します。

この--detailsフラグは、現在の Docker コンテナに設定した環境変数も出力します。一方、この--sinceフラグを使用すると、特定の時点以降に発生したログのみを表示できます。

現在実行中の Docker コンテナからのより詳細なログ出力を表示するターミナル。

Dockerコンテナをカスタマイズする方法

本質的に、Docker コンテナは、現在のシステム上で実行される Linux の小型で簡素化されたバージョンです。つまり、仮想マシンと同様に、コンテナ内のデータにアクセスして取得することが可能です。

ホストマシンからコンテナにローカル ファイルをコピーするには、次のcpサブコマンドを実行します。

場合によっては、コンテナ内でシェルを開いてコンテナに「ステップイン」する必要もあります。この方法では、ファイルを編集したり、バイナリをインストールしたり、必要に応じてカスタマイズしたりできます。

コンテナのルート シェルにドロップするプロセスを示すターミナル。

ここで、たとえば「index.html」を編集して、その中に Web サイトのホームページを作成できます。

Docker コンテナのルート シェルにコピーされた HTML ファイルを表示するターミナル。

コンテナのシェルを終了するには、Ctrl+ を押すDか、exitターミナルで実行します。

Docker コンテナのルート シェルからの exit コマンドを強調表示するターミナル。

Dockerコンテナとイメージを削除する方法

使用されていない Docker コンテナとイメージを削除することは、デプロイメントの一般的なハウスキーピングの重要な部分です。これを行うと、サーバーから不要なファイルを削除し、長期的にはストレージ スペースを節約できます。

コンテナを削除する前に、まずコンテナを停止していることを確認してください。

次に、サブコマンドを使用してコンテナを削除しますrm

を実行して、古い Docker コンテナが適切に削除されたことを確認しますdocker ps -a

現在ダウンしているものも含め、利用可能なすべての Docker コンテナを表示するターミナル。

Docker デプロイメントから元の Docker イメージを削除します。

システムから Docker イメージを削除したときの出力を強調表示するターミナル。

を実行して、元の Docker イメージが適切に削除されたかどうかを確認しますdocker images

更新された Docker イメージ リストを表示するターミナル。

Docker コンテナを作成、管理、削除する方法を学ぶことは、Linux サーバーで実行できることのほんの一部にすぎません。

画像クレジット: Shamin Haky (Unsplash経由)。すべての変更とスクリーンショットはRamses Redによるものです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です