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