【初心者向け】DockerでコンテナIDを使って起動する方法|一時停止後の再起動や自動操作にも対応!

Docker

Dockerを使っていると、停止したコンテナを再起動したり、特定のコンテナだけ操作したいときがあります。

その際に便利なのが、「コンテナID」を使った明確な指定です。

この記事では、DockerでコンテナIDを使ってコンテナを起動する方法と、名前との違い・確認方法・関連操作(停止・削除)まで初心者にもわかりやすく解説します。

スポンサーリンク

コンテナIDとは?名前との違い

Dockerではコンテナを作成すると、それぞれに「一意のID(識別子)」が自動で割り当てられます。

このIDはDocker内部で管理用に使われる英数字の文字列です。

コンテナIDと名前の比較

識別方法特徴使用場面
コンテナID自動生成される64文字の英数字(通常は短縮表示)3a4b2c5d6f78スクリプト処理、一意性が必要な場合
コンテナ名自動生成または--nameオプションで指定my-nginx または naughty_einstein(自動生成例)人間が識別しやすい場面、日常の管理

どちらの方法でもDockerコンテナを操作できますが、IDを使うメリットは:

  • 一意性が保証されている(名前は重複可能性がある)
  • スクリプトなど自動処理に適している
  • コンテナの状態に関わらず不変(名前は変更可能)

コンテナIDの確認方法(docker ps -a)

コンテナを操作する前に、まずはIDを確認する必要があります。

実行中のコンテナのIDを確認

docker ps

すべてのコンテナ(停止中も含む)のIDを確認

docker ps -a

出力例:

CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS                      PORTS                    NAMES
3a4b2c5d6f78   nginx          "nginx -g 'daemon …"    10 minutes ago   Exited (0) 5 minutes ago    80/tcp                   my-nginx
7e8f9d1c2b3a   mysql:8.0      "docker-entrypoint.s…"   3 hours ago     Up 3 hours                  3306/tcp, 33060/tcp      my-database

この出力から以下の情報が読み取れます:

  • 3a4b2c5d6f78は停止中のnginxコンテナのID
  • 7e8f9d1c2b3aは実行中のMySQLコンテナのID

IDのみを抽出(スクリプト用)

docker ps -a -q

この -q(quiet)オプションを使うと、IDだけを抽出できます:

3a4b2c5d6f78
7e8f9d1c2b3a

特定の条件のコンテナIDだけを確認

docker ps -a -q --filter "status=exited"

停止中(Exited)のコンテナIDだけを表示します:

3a4b2c5d6f78

コンテナIDで起動する基本コマンド

停止中のコンテナをIDを指定して起動するには、docker startコマンドを使います。

基本構文

docker start コンテナID

実行例

docker start 3a4b2c5d6f78

正常に起動すると、コンテナIDが出力されます:

3a4b2c5d6f78

起動確認

コンテナが起動したかどうかを確認するには:

docker ps

出力例:

CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS              PORTS                    NAMES
3a4b2c5d6f78   nginx          "nginx -g 'daemon …"    15 minutes ago   Up 10 seconds       80/tcp                   my-nginx
7e8f9d1c2b3a   mysql:8.0      "docker-entrypoint.s…"   3 hours ago     Up 3 hours          3306/tcp, 33060/tcp      my-database

STATUS列が「Up」になっていれば、正常に起動しています。

起動時のオプション

docker start -a 3a4b2c5d6f78

-a(attach)オプションを付けると、コンテナの標準出力が表示されます。

これは、ログを確認しながら起動したい場合に便利です。

再起動・停止・削除もIDで操作可能

コンテナIDを使えば、起動以外の操作も簡単に行えます。

停止

docker stop 3a4b2c5d6f78

このコマンドでコンテナを安全に停止できます(SIGTERM信号を送信し、一定時間後にSIGKILLで強制終了)。

再起動

docker restart 3a4b2c5d6f78

これはstopstartを連続して実行するのと同等で、コンテナを再起動します。

一時停止と再開

# 一時停止
docker pause 3a4b2c5d6f78

# 再開
docker unpause 3a4b2c5d6f78

一時停止は、コンテナのプロセスを完全に停止せず、一時的に凍結します。

削除

docker rm 3a4b2c5d6f78

注意: 実行中のコンテナは削除できません。先に停止するか、強制削除オプション(-f)を使う必要があります:

docker rm -f 3a4b2c5d6f78

注意点とヒント(短縮ID・一括処理)

短縮IDの使用

Dockerでは、コンテナIDの最初の数文字だけで操作可能です(一意に特定できる限り)。

docker start 3a4b

これは、3a4bで始まるIDを持つコンテナを起動します。

ただし、複数のコンテナが同じプレフィックス(先頭文字列)を持つ場合は、より長いIDを指定する必要があります。

一括処理の例

停止中のコンテナをすべて起動

docker start $(docker ps -a -q --filter "status=exited")

このコマンドは、すべての停止中のコンテナIDを取得して、それらを一括で起動します。

特定のイメージから作成されたコンテナのみを操作

docker start $(docker ps -a -q --filter "ancestor=nginx")

nginxイメージから作成されたすべてのコンテナを起動します。

スクリプト例:条件付き起動

#!/bin/bash

# MySQLコンテナが停止していたら起動
MYSQL_CONTAINER=$(docker ps -a -q --filter "name=mysql" --filter "status=exited")
if [ ! -z "$MYSQL_CONTAINER" ]; then
  echo "Starting MySQL container..."
  docker start $MYSQL_CONTAINER
  echo "Waiting for MySQL to initialize..."
  sleep 10
fi

# 次にWebアプリコンテナを起動
WEBAPP_CONTAINER=$(docker ps -a -q --filter "name=webapp" --filter "status=exited")
if [ ! -z "$WEBAPP_CONTAINER" ]; then
  echo "Starting Web application container..."
  docker start $WEBAPP_CONTAINER
fi

まとめ

Dockerでは、コンテナIDを使うことでより正確かつ柔軟な操作が可能になります。

ポイント:

  • コンテナIDは docker ps -a で確認できる
  • docker start <ID> でID指定起動が可能
  • docker stopdocker restartdocker rm などもIDで操作可能
  • -q オプションや --filter を組み合わせてスクリプト処理に活用できる
  • IDは短縮形で指定可能(一意性が保たれる範囲で)

コンテナの管理や自動化を進める上で、コンテナIDベースの操作は非常に重要です。

特にシェルスクリプトやCI/CDパイプラインなどの自動処理では、名前よりもIDを使った方が確実です。

コメント

タイトルとURLをコピーしました