基本的なDocker Runコマンド

docker runコマンドの基礎を学びます。Dockerがimageからcontainerを作成・起動する仕組み、デフォルトの動作、および必須フラグについて解説します。

Basic Commands

詳細な説明

Docker Containerの基盤

docker runコマンドはDockerで最も基本的なコマンドです。指定されたimageから新しいcontainerを作成し、起動します。最もシンプルな形式では、image名だけを指定します:

docker run ubuntu

これによりubuntu imageが(ローカルにキャッシュされていない場合)pullされ、新しいcontainerが作成され、imageのCMDまたはENTRYPOINT命令で指定されたデフォルトコマンドが実行されます。

裏側で起こっていること

docker runを実行すると、Dockerは以下のステップを順番に実行します:

  1. Imageの検索: Dockerはローカルのimageキャッシュを確認します。imageが見つからない場合、Docker Hub(または設定されたregistry)からpullします。
  2. Containerの作成: imageの読み取り専用レイヤーの上に、新しい読み書き可能なファイルシステムレイヤーが作成されます。
  3. ネットワークのセットアップ: Dockerはcontainerに仮想ネットワークインターフェースを割り当て、デフォルトのbridgeネットワーク上でIPアドレスを付与します。
  4. プロセスの実行: containerのメインプロセス(PID 1)が起動します。これはimageのデフォルトCMDまたはユーザーが指定したコマンドのいずれかです。

デフォルトコマンドの上書き

image名の後にカスタムコマンドを追加できます:

docker run ubuntu echo "Hello from container"

これによりimageのデフォルトコマンドがecho "Hello from container"に置き換えられます。containerはコマンドを実行し、出力を表示して終了します。

インタラクティブモード

対話的なshellセッションを行うには、-i(インタラクティブ)フラグと-t(擬似TTY)フラグを組み合わせます:

docker run -it ubuntu bash

これによりcontainer内でbashプロンプトが使えるようになります。-itがない場合、入力ストリームが接続されていないため、shellはすぐに終了します。

初心者向けの重要ポイント

  • docker runを実行するたびに新しいcontainerが作成されます。既存のcontainerを再利用するわけではありません。
  • メインプロセスが終了するとcontainerは停止しますが、削除はされません(自動削除するには--rmを使用します)。
  • container名は--nameで指定しない限り自動生成されます。
  • containerのファイルシステムはデフォルトで一時的であり、containerが削除されると変更内容は失われます。

ユースケース

ホストシステムに影響を与えずに、スクリプトのテストやパッケージのインストール確認など、クリーンなLinux環境で一度きりのコマンドを実行する場合に使用します。

試してみる — Docker Run Command Builder

フルツールを開く