Dockerコンテナでアプリを実行していると、
「中の様子を確認したい」
「シェルでファイルを操作したい」
という場面が必ず出てきます。
そんなときに必要なのが、「コンテナのターミナルに入る」という操作です。
この記事では、Docker Desktop(Mac/Windows対応)を使って、GUIまたはターミナルからコンテナの中に入る方法を初心者向けにわかりやすく解説します。
コンテナの「中に入る」とは?できること
Dockerで動いているコンテナは、独立した環境として動作しています。
「コンテナに入る」とは、そのコンテナの内部環境にアクセスして操作できる状態になることです。
コンテナに入ることで可能になること:
- ファイルシステムの確認や編集:コンテナ内のファイル構成を調べたり、設定ファイルを編集したりできます
- プロセスの確認・監視:
ps
コマンドなどで実行中のプロセスを確認できます - 環境変数や設定の確認:
env
コマンドなどで環境変数を確認できます - ライブラリやツールのインストール:デバッグ用に一時的にツールをインストールできます
- ログの確認:直接ログファイルを確認できます
- ネットワーク接続のテスト:
ping
やcurl
などでネットワーク接続を確認できます
つまり、サーバーにSSHで接続するような感覚で、コンテナの内部を直接操作できるようになります。
これはデバッグやトラブルシューティングの際に非常に役立ちます。
Docker DesktopのGUIでターミナルに接続する方法
Docker Desktopには、クリックだけでコンテナに入れるGUI機能が備わっています。
これは特にコマンドに慣れていない初心者の方におすすめの方法です。
手順(Windows / macOS 共通):
- Docker Desktopを起動します
- 左側のサイドメニューから「Containers」をクリック
- 実行中のコンテナの一覧が表示されるので、操作したいコンテナを見つける
- コンテナの起動(停止)ボタン右の3点リーダーをクリック
- 表示されたメニューの「Open in Terminal」をクリック
- クリックすると、ターミナル画面に移動
これだけでコンテナ内部に接続されたシェル環境を使えるようになります!
もしくは:
- Docker Desktopを起動します
- 左側のサイドメニューから「Containers」をクリック
- 実行中のコンテナの一覧が表示されるので、操作したいコンテナを見つける
- コンテナの詳細画面に移動
- 上部の「Exec」をクリック
- クリックすると、ターミナル画面に移動
Docker Desktop GUIの利点:
- コマンドを覚える必要がない
- コンテナが実行中かどうか確認する手間が省ける
- クリックだけで操作できる
- コンテナの基本情報も同時に確認できる
コマンドでコンテナに入る方法(docker exec)
ターミナル操作に慣れている方や、スクリプトの中で使いたい場合は、コマンドラインからコンテナに入る方法が便利です。
この方法ではdocker exec
コマンドを使用します。
基本構文:
docker exec -it コンテナ名またはID /bin/bash
例:
docker exec -it my_container /bin/bash
または、コンテナIDを使う場合:
docker exec -it a1b2c3d4e5f6 /bin/bash
オプションの意味:
-i
:インタラクティブモード。標準入力を有効にします(キーボード入力を受け付ける)-t
:疑似端末(TTY)を割り当てます(ターミナルの表示を整えるため)/bin/bash
:コンテナ内で実行するコマンド(ここではbashシェルを起動)
コンテナ名またはIDの確認方法:
コンテナ名やIDがわからない場合は、以下のコマンドで確認できます:
docker ps
これにより実行中のコンテナの一覧が表示されます:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a1b2c3d4e5f6 nginx:latest "/docker-entrypoint.…" 2 hours ago Up 2 hours 0.0.0.0:80->80/tcp my_nginx
b2c3d4e5f6a7 mysql:8 "docker-entrypoint.s…" 5 hours ago Up 5 hours 3306/tcp, 33060/tcp my_mysql
bashがない場合の対処法(shで代用)
Alpine Linuxなどの軽量イメージでは、サイズ削減のためにbash
がインストールされていないことがあります。この場合、以下のエラーが発生します:
OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "/bin/bash": stat /bin/bash: no such file or directory: unknown
対処法1: /bin/shを代わりに使用する
多くのLinuxディストリビューションでは、最低限/bin/sh
が利用可能です:
docker exec -it my_container /bin/sh
対処法2: bashをコンテナ内にインストールする
コンテナ内で一時的にbashをインストールすることもできます:
Alpine Linuxの場合:
# まずshで入る
docker exec -it my_container /bin/sh
# コンテナ内でbashをインストール
apk add --no-cache bash
# 一度exitして出る
exit
# 今度はbashで入れる
docker exec -it my_container /bin/bash
Debian/Ubuntuベースの場合:
docker exec -it my_container /bin/sh
apt-get update && apt-get install -y bash
exit
docker exec -it my_container /bin/bash
対処法3: イメージ作成時にbashを含める
Dockerfileでイメージを作成する際に、最初からbashを含めることも可能です:
FROM alpine:latest
# bashをインストール
RUN apk add --no-cache bash
# デフォルトシェルをbashに設定
SHELL ["/bin/bash", "-c"]
# ...以下、他の設定
よくあるエラーとその対策
エラー1: 「コンテナが見つからない」
Error response from daemon: No such container: my_container
原因:
- コンテナ名またはIDが間違っている
- 指定したコンテナが存在しない
対策:
docker ps -a
で全コンテナ(停止中含む)を確認- コンテナ名/IDを正確にコピー&ペースト
エラー2: 「bashコマンドが見つからない」
OCI runtime exec failed: [...] exec: "/bin/bash": stat /bin/bash: no such file or directory: unknown
原因:
- コンテナイメージにbashがインストールされていない
対策:
/bin/sh
を代わりに使用する- コンテナ内でbashをインストールする
エラー3: 「コンテナが停止している」
Error response from daemon: Container [ID] is not running
原因:
- コンテナが停止状態
対策:
- まずコンテナを起動してから接続する:
docker start my_containerdocker exec -it my_container /bin/bash
エラー4: 「権限がない」
permission denied while trying to connect to the Docker daemon socket
原因:
- Dockerデーモンへのアクセス権限がない
対策:
sudo
をコマンドの前につける- ユーザーを
docker
グループに追加する:sudo usermod -aG docker $USER# ログアウト後、再ログインが必要
まとめ
Docker Desktopでは、GUIでもCLIでも簡単にコンテナの中に入って操作することが可能です。
まとめ:
- GUI操作 → Docker Desktopからボタンで接続
- 初心者に優しい
- クリックだけで操作可能
- コンテナの状態も視覚的に確認できる
- コマンド操作 →
docker exec -it コンテナ名 /bin/bash
- スクリプト化に適している
- より細かい制御が可能
- 慣れると素早く操作できる
- 覚えておくべきポイント:
bash
がないときは/bin/sh
を使用する- コンテナが停止中なら
docker start
で起動してから入る - コンテナ名は
docker ps
で確認できる
コンテナ内に入る操作を覚えておけば、トラブル対応・デバッグ・設定確認がグッと楽になります!
特に開発環境でのデバッグや本番環境のトラブルシューティングにおいて、この知識は非常に役立ちます。
Docker初心者の方は、まずGUI操作から始めて、慣れてきたらコマンドラインでの操作にステップアップすることをおすすめします。
どちらの方法も状況に応じて使い分けられるようになると、Docker操作の幅が広がります。
コメント