「docker run bash」は Docker でコンテナ内にインタラクティブな bash シェルを起動するための代表的なコマンドです。本記事では docker run -it の各オプションの意味から、よく使うフラグ一覧、実行中コンテナへの入り方(docker exec との違い)、イメージ別の注意点まで体系的に解説します。
docker run bash の基本構文
コンテナを起動しながら bash シェルに入る基本コマンドは次のとおりです:
docker run -it IMAGE_NAME bash
例として、Ubuntu の最新イメージを使う場合:
docker run -it ubuntu bash
このコマンドで Ubuntu ベースの新しいコンテナが作成され、bash シェルが対話形式で起動します。シェルを終了するには exit を入力するか、Ctrl+D を押します。
-i と -t オプションの意味
-it は2つのオプションを組み合わせたものです:
-i(--interactive):標準入力を開いたままにし、コマンド入力を可能にする-t(--tty):擬似 TTY(端末)を割り当て、通常のターミナルと同じ操作感を実現する
2つを組み合わせることで、ターミナルから bash を操作できる対話型セッションが成立します。-i だけでは見た目が崩れ、-t だけでは入力が受け付けられないため、bash セッションには必ず両方を指定します。
長い形式で書くと次のようになります(動作は同じです):
docker run --interactive --tty ubuntu bash
よく使うオプション一覧
docker run bash と組み合わせて使う主なオプションをまとめます:
| オプション | 説明 | 使用例 |
|---|---|---|
-it |
インタラクティブな TTY セッション | docker run -it ubuntu bash |
--rm |
コンテナ終了時に自動削除 | docker run --rm -it ubuntu bash |
--name |
コンテナに名前を付ける | docker run --name mytest -it ubuntu bash |
-e |
環境変数を設定する | docker run -e MY_VAR=value -it ubuntu bash |
-v |
ホストのディレクトリをマウント | docker run -v $(pwd):/app -it ubuntu bash |
-p |
ポートをホストに公開 | docker run -p 8080:80 -it nginx bash |
-w |
コンテナ内の作業ディレクトリを指定 | docker run -w /app -it ubuntu bash |
–rm オプションのすすめ
bash シェルを使った一時的な動作確認では、--rm を付けることを強くおすすめします。終了後にコンテナが自動削除されるため、使い捨てのテスト環境として非常に便利です:
docker run --rm -it ubuntu bash
--rm を付けない場合、終了したコンテナが残り続けます。docker ps -a で停止済みコンテナが溜まっている場合は docker container prune で一括削除できます。
docker run vs docker exec:使い分け
docker run bash と混同しやすいのが docker exec です。両者には明確な違いがあります:
| コマンド | コンテナの状態 | 用途 |
|---|---|---|
docker run -it IMAGE bash |
新しいコンテナを起動する | イメージからテスト環境を一から作る |
docker exec -it CONTAINER bash |
すでに動いているコンテナに入る | 起動中のサービスを操作・デバッグする |
実行中のコンテナに入るには次のコマンドを使います:
# 実行中のコンテナ一覧を確認
docker ps
# コンテナ名またはIDを指定して入る
docker exec -it CONTAINER_NAME bash
例えば Web サーバーのコンテナ(my-nginx)に入る場合:
docker exec -it my-nginx bash
Docker Compose 環境でコンテナに入る場合は Docker Compose で exec bash を使いこなす方法も参考にしてください。
イメージ別の注意点
bash が使えるかどうかはベースイメージによって異なります。
Ubuntu / Debian(bash 標準搭載)
最も一般的なベースイメージです。bash はデフォルトで搭載されています:
docker run --rm -it ubuntu bash
docker run --rm -it debian bash
docker run --rm -it ubuntu:22.04 bash
Alpine(bash が未搭載)
Alpine Linux は軽量さが売りですが、デフォルトでは bash が含まれていません。代わりに sh を使うか、apk で bash をインストールします:
# sh を使う(bash 不要)
docker run --rm -it alpine sh
# bash をインストールして使う
docker run --rm -it alpine sh -c "apk add --no-cache bash && bash"
CentOS / Amazon Linux(bash 標準搭載)
docker run --rm -it centos bash
docker run --rm -it amazonlinux bash
bash が見つからないエラーの対処法
docker run -it IMAGE bash を実行したときに次のエラーが出る場合、そのイメージに bash がインストールされていません:
executable file not found in $PATHOCI runtime exec failed: exec failed: ... no such file or directory
/bin/bash をフルパスで試すか、sh で代替します:
# フルパスで試す
docker run --rm -it IMAGE /bin/bash
# sh で代替
docker run --rm -it IMAGE sh
ベストプラクティス
使い捨てコンテナには –rm を付ける
bash での動作確認が目的なら、終了後に自動削除される --rm を習慣にしましょう。docker rm を忘れてコンテナが積み上がる問題を防げます。
イメージのバージョンを固定する
latest タグは便利ですが、チームや CI 環境での再現性を高めるためにバージョンを明示的に指定することをおすすめします:
docker run --rm -it ubuntu:22.04 bash
イメージを事前に pull しておく
初回実行時はイメージのダウンロードが発生します。作業前に docker pull で最新版を取得しておくとスムーズです:
docker pull ubuntu:22.04
本番環境での直接アクセスは避ける
デバッグ目的のシェルアクセスは便利ですが、本番コンテナへの docker exec によるアクセスはセキュリティ上のリスクがあります。ログや専用の監視ツールを活用しましょう。
よくあるトラブルとその対処法
bash: command not found
イメージに bash が含まれていない場合のエラーです。sh で代替するか、「イメージ別の注意点」セクションを参照してください。
バージョンの不一致
異なる環境で Docker イメージのバージョンが合わない場合、予期しない動作が起きることがあります。IMAGE:TAG でバージョンを固定して使いましょう:
docker run --rm -it ubuntu:22.04 bash
ホストのリソース不足
コンテナがリソースを大量に消費する場合は docker stats で状況を確認します:
docker stats
まとめ
docker run bash は Docker でインタラクティブなシェルセッションを開始するための基本コマンドです。要点を整理します:
-itは--interactiveと--ttyの組み合わせで、bash 操作に必須- 使い捨てコンテナには
--rmを付けてコンテナの積み上がりを防ぐ - 実行中のコンテナには
docker runではなくdocker execを使う - Alpine など bash 非搭載イメージでは
shを代替として使う - 本番環境でのシェルアクセスはセキュリティリスクがあるため最小限にする
Docker Compose 環境で稼働中のコンテナに入る場合は Docker Compose で exec bash を使いこなす方法も参考にしてください。

コメント