基本的な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は以下のステップを順番に実行します:
- Imageの検索: Dockerはローカルのimageキャッシュを確認します。imageが見つからない場合、Docker Hub(または設定されたregistry)からpullします。
- Containerの作成: imageの読み取り専用レイヤーの上に、新しい読み書き可能なファイルシステムレイヤーが作成されます。
- ネットワークのセットアップ: Dockerはcontainerに仮想ネットワークインターフェースを割り当て、デフォルトのbridgeネットワーク上でIPアドレスを付与します。
- プロセスの実行: 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環境で一度きりのコマンドを実行する場合に使用します。