Dockerコンテナの使い方
コンテナは、あらゆる Docker インストールの生命線です。コンテナは Docker プラットフォームの基盤として機能し、依存関係やバージョンの競合を気にせずにコンピューター上でサービスを実行できます。ここでは、Docker CLI ツールを使用して Docker コンテナを作成、管理、カスタマイズする基本について説明します。
Docker イメージを見つけて取得する方法
Docker コンテナは、元のシステムの残りの部分とは別にプログラムを実行できる特殊なタイプのソフトウェア環境です。これを実現するために、Docker は「ソフトウェア イメージ」を使用します。これは、コンテナの起動のベースとして機能するプログラムの静的コピーです。
イメージとコンテナを区別することで、必要に応じてソフトウェアを再作成し、適応させることができます。たとえば、「httpd」などのイメージから、「website1」と「website2」という 2 つの異なるコンテナを作成できます。
新しい Docker イメージを確認する最も簡単な方法は、次のsearch
サブコマンドを使用することです。
イメージをシステムにダウンロードするには、次のコマンドを実行します。
次のサブコマンドを使用して、新しいイメージがシステムに適切に追加されたことを確認しますimages
。
Dockerfiles を使用して新しいイメージを構築する
Docker Hub から事前に構築されたイメージを取得する以外に、Docker CLI から直接イメージを構築することもできます。これは、既存のソフトウェア パッケージのカスタム バージョンを作成する場合や、新しいアプリを Docker に移植する場合に便利です。
これを行うには、まずホーム ディレクトリにビルド ファイル用のフォルダーを作成します。
お気に入りのテキスト エディターを使用して新しい Dockerfile を作成します。
新しい Dockerfile 内に次のコード行を貼り付けます。
「sample-site」フォルダを作成し、それをコピーするか、基本的な HTML サイトを作成します。
新しい Dockerfile を保存し、次のコマンドを実行してシステム上でビルドします。
新しい Docker イメージが Docker イメージのリストに存在するかどうかを確認します。
既存のコンテナを使用して新しいイメージを構築する
Docker CLI ツールは、システムに現在存在するコンテナから新しいイメージを構築することもできます。これは、既存の環境で既に作業していて、現在のセットアップから新しいイメージを作成する場合に便利です。
これを行うには、コンテナが現在実行されていないことを確認します。
コンテナの名前の後にサブコマンドを実行しcommit
、その後に新しい Docker イメージの名前を指定します。
を実行して、新しい Docker イメージがシステムにあることを確認しますdocker images
。
Dockerコンテナを実行および停止する方法
Docker イメージの準備ができたら、それを使用して最初のコンテナを作成できます。これを行うには、run
実行するイメージの名前を続けてサブコマンドを使用します。
これは最初の Docker コンテナを実行する場合には有効ですが、この方法では現在のシェル セッションが引き継がれます。コンテナをバックグラウンドで実行するには、サブコマンド-d
の後にフラグを追加しますrun
。
サブrun
コマンドは、新しい Docker コンテナの動作を変更できるいくつかの追加フラグも受け取ることができます。たとえば、フラグを使用すると、--name
コンテナにカスタマイズ可能な名前を追加できます。
一方、--publish
フラグを使用して、Docker コンテナにアクセスできるネットワーク ポートをリダイレクトできます。これは主に、コンテナが特権ポートを占有しないようにする場合に役立ちます。
次のコマンドを実行すると、システム内で現在実行中のすべての Docker コンテナを確認できます。
サブコマンドと同様にrun
、ps
動作を変更するいくつかのフラグも使用できます。たとえば、現在ダウンしているコンテナを表示するには、次の-a
フラグを使用します。
実行中のコンテナをオフにするには、stop
サブコマンドの後にコンテナ ID または Docker コンテナの名前を指定します。
サブコマンドを再実行することで、停止したコンテナを再起動できますstart
。
Docker コンテナの一時停止と終了
Docker CLI ツールを使用すると、実行中のコンテナ プロセスを一時的に停止したり強制終了したりすることもできます。これは、Docker セットアップの問題をトラブルシューティングしていて、動作が不安定なコンテナを隔離または停止したい場合に役立ちます。
まず、実行して、docker ps
システム内で実行中のすべてのコンテナを一覧表示します。
管理するコンテナの ID または名前を見つけます。
pause
一時的に停止するコンテナの名前を指定してサブコマンドを実行します。
次のサブコマンドを実行すると、中断されたプロセスを再開できますunpause
。
不正な動作をしているプロセスを停止するには、kill
コンテナの名前の後にサブコマンドを実行します。
Dockerコンテナを検査する方法
コンテナの複雑な詳細を把握することは、Docker スタックの健全性を維持する上で非常に重要です。これにより、潜在的な問題をすばやく確認することができ、デプロイメント全体を修正するかやり直すかの違いが生じる可能性があります。
Docker コンテナの概要を確認するには、次のinspect
サブコマンドを実行します。
これを行うと、コンテナ全体の現在の状態を説明する長い JSON 文字列が出力されます。出力を jq にパイプするか、組み込み-f
フラグに続けて出力したい JSON オブジェクトを使用することで、これを絞り込むことができます。
コンテナログをターミナルに出力する
それ以外にも、現在実行中の Docker コンテナのログを追跡して印刷することもできます。これは、サービスの現在の動作を確認し、STDOUT に返される出力を確認する場合に役立ちます。
これを行うには、logs サブコマンドに続けてコンテナの名前を実行します。
また、フラグを指定した logs サブコマンドを実行して--follow
、Docker サービスの継続的なログを作成することもできます。これは、tail -f
UNIX パイプの末尾で実行するのと似ています。
他のサブコマンドと同様に、さまざまなフラグを追加して、Docker コンテナのログの出力をカスタマイズすることもできます。たとえば、フラグは、--timestamps
コンテナが STDOUT に送信するすべてのメッセージに詳細なタイムスタンプを追加します。
この--details
フラグは、現在の Docker コンテナに設定した環境変数も出力します。一方、この--since
フラグを使用すると、特定の時点以降に発生したログのみを表示できます。
Dockerコンテナをカスタマイズする方法
本質的に、Docker コンテナは、現在のシステム上で実行される Linux の小型で簡素化されたバージョンです。つまり、仮想マシンと同様に、コンテナ内のデータにアクセスして取得することが可能です。
ホストマシンからコンテナにローカル ファイルをコピーするには、次のcp
サブコマンドを実行します。
場合によっては、コンテナ内でシェルを開いてコンテナに「ステップイン」する必要もあります。この方法では、ファイルを編集したり、バイナリをインストールしたり、必要に応じてカスタマイズしたりできます。
ここで、たとえば「index.html」を編集して、その中に Web サイトのホームページを作成できます。
コンテナのシェルを終了するには、Ctrl+ を押すDか、exit
ターミナルで実行します。
Dockerコンテナとイメージを削除する方法
使用されていない Docker コンテナとイメージを削除することは、デプロイメントの一般的なハウスキーピングの重要な部分です。これを行うと、サーバーから不要なファイルを削除し、長期的にはストレージ スペースを節約できます。
コンテナを削除する前に、まずコンテナを停止していることを確認してください。
次に、サブコマンドを使用してコンテナを削除しますrm
。
を実行して、古い Docker コンテナが適切に削除されたことを確認しますdocker ps -a
。
Docker デプロイメントから元の Docker イメージを削除します。
を実行して、元の Docker イメージが適切に削除されたかどうかを確認しますdocker images
。
Docker コンテナを作成、管理、削除する方法を学ぶことは、Linux サーバーで実行できることのほんの一部にすぎません。
画像クレジット: Shamin Haky (Unsplash経由)。すべての変更とスクリーンショットはRamses Redによるものです。
コメントを残す