【完全ガイド】Docker Desktopでコンテナのターミナルに入る方法|GUI操作とコマンドライン両方を解説!

Docker

Dockerコンテナでアプリを実行していると、
中の様子を確認したい
シェルでファイルを操作したい
という場面が必ず出てきます。

そんなときに必要なのが、「コンテナのターミナルに入る」という操作です。

この記事では、Docker Desktop(Mac/Windows対応)を使って、GUIまたはターミナルからコンテナの中に入る方法を初心者向けにわかりやすく解説します。

スポンサーリンク

コンテナの「中に入る」とは?できること

Dockerで動いているコンテナは、独立した環境として動作しています。

「コンテナに入る」とは、そのコンテナの内部環境にアクセスして操作できる状態になることです。

コンテナに入ることで可能になること:

  • ファイルシステムの確認や編集:コンテナ内のファイル構成を調べたり、設定ファイルを編集したりできます
  • プロセスの確認・監視psコマンドなどで実行中のプロセスを確認できます
  • 環境変数や設定の確認envコマンドなどで環境変数を確認できます
  • ライブラリやツールのインストール:デバッグ用に一時的にツールをインストールできます
  • ログの確認:直接ログファイルを確認できます
  • ネットワーク接続のテストpingcurlなどでネットワーク接続を確認できます

つまり、サーバーにSSHで接続するような感覚で、コンテナの内部を直接操作できるようになります。

これはデバッグやトラブルシューティングの際に非常に役立ちます。

Docker DesktopのGUIでターミナルに接続する方法

Docker Desktopには、クリックだけでコンテナに入れるGUI機能が備わっています。

これは特にコマンドに慣れていない初心者の方におすすめの方法です。

手順(Windows / macOS 共通):

  1. Docker Desktopを起動します
  2. 左側のサイドメニューから「Containers」をクリック
  3. 実行中のコンテナの一覧が表示されるので、操作したいコンテナを見つける
  4. コンテナの起動(停止)ボタン右の3点リーダーをクリック
  5. 表示されたメニューの「Open in Terminal」をクリック
  6. クリックすると、ターミナル画面に移動

これだけでコンテナ内部に接続されたシェル環境を使えるようになります!

もしくは:

  1. Docker Desktopを起動します
  2. 左側のサイドメニューから「Containers」をクリック
  3. 実行中のコンテナの一覧が表示されるので、操作したいコンテナを見つける
  4. コンテナの詳細画面に移動
  5. 上部の「Exec」をクリック
  6. クリックすると、ターミナル画面に移動

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操作の幅が広がります。

コメント

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