このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Docker入門】BusyBoxコンテナを使ってみる

docker run -it --rm busybox」コマンドの概要

BusyBoxコンテナの利用方法は、次のコマンドで行います。

docker run -it --rm busybox

 このコマンドはBusyBoxコンテナを起動し、ユーザーをルートとしてコンテナ内のシェルに接続します。これにより、Linuxコマンドを使用して作業を行うことができます。コマンドを実行すると、BusyBoxが含む標準的なLinuxコマンドを利用できます。作業が終了すると、コンテナは自動的に削除されます。

このコマンドのそれぞれのオプションは、次のように解釈されます。

【コマンド】

docker run-it--rmbusybox
コンテナの作成と起動対話モードとして起動終了時にコンテナを自動的に削除イメージの指定
BusyBoxコンテナ実行コマンド

docker run

 Dockerコンテナの作成と起動を一括して行うためのコマンドです。指定されたイメージがローカルに存在しない場合、デフォルトでDocker Hubからそのイメージをダウンロードします。つまり、指定されたイメージがホスト上に見つからない場合、Dockerは自動的にDocker Hubにアクセスし、該当するイメージを取得します。

-it

 コンテナを対話モードで実行し、ターミナルに接続します。「-i」は対話モードを有効にし、-tは端末を割り当てます。

--rm

 コンテナが終了した際に自動的に削除されるよう指定します。これにより、コンテナの終了後に余分なリソースが残らなくなります。

busybox

実行するコンテナイメージを指定します。BusyBoxは軽量なLinux環境を提供するためのイメージです。

Dockerにおける BusyBox の用途

 BusyBoxは、軽量でありながら多くの標準的なLinuxコマンドを含むため、Dockerにおいてさまざまな用途で活用されます。以下では、BusyBoxがDockerでどのように使用されるかについて解説します。

ボリュームの作成

 BusyBoxは一時的なタスクやテスト用途に適しているため、ボリュームの作成時に一時的なデータを扱う際に便利です。例えば、データのバックアップやコピーなどの一時的な作業を行う場合にBusyBoxを使用することができます。作業が完了したら、コンテナを削除して不要なデータをクリーンアップできます。

ネットワーク

 BusyBoxはネットワークのテストやデバッグに役立ちます。ping や tracerouteなどのネットワーク関連のコマンドを使用して、ネットワーク接続やルーティングの問題のトラブルシューティングに役立てることができます。

その他の用途

 BusyBoxは、Docker環境でマルチホスト環境を構築するためのツールとしても使用されます。BusyBoxの軽量さと柔軟性を活かして、複数のホスト間で通信を確認したり、システムリソースを監視したりすることができます。

 また、BusyBoxは"ちょっとした"Linuxの機能を手軽に利用するためにも使われます。例えば、シェルスクリプトの実行やファイルの操作、プロセスの監視など、さまざまな用途でBusyBoxが活用されています。

BusyBoxのまとめ

簡単に言ってしまえば、

ちょっと、Linuxのコマンドを使ってみたいんだけど。。。

という場面で便利です。

Docker環境での軽量な作業やテスト、デバッグに非常に有効なツールであると言えます。

BusyBoxを使ってみる

前置きが少々長くなりました。

コマンドの意味が理解できたところで、BusyBoxを早速、使ってみましょう。

BusyBoxコンテナの起動

・「docker run -it --rm busybox」を実行します。

PS C:\Users\joeac> docker run -it --rm busybox
Unable to find image 'busybox:latest' locally
latest: Pulling from library/busybox
7b2699543f22: Pull complete
Digest: sha256:650fd573e056b679a5110a70aabeb01e26b76e545ec4b9c70a9523f2dfaf18c6
Status: Downloaded newer image for busybox:latest
/ # ←root権限になっている

Linuxのコマンドを試してみる

 Linuxの主要なコマンドしか使えませんが、ここで何でもよいので、Linuxのコマンドを実行してみます。

・「top」コマンドを実行します。このコマンドはCPUやメモリの使用率などの情報を一覧で確認するコマンドです。

/ # top

CPUやメモリの使用率などの情報が表示されます。

Mem: 2257572K used, 13995820K free, 3904K shrd, 103012K buff, 1128480K cached
CPU:  0.0% usr  0.0% sys  0.0% nic 99.9% idle  0.0% io  0.0% irq  0.0% sirq
Load average: 0.00 0.00 0.00 1/779 7
  PID  PPID USER     STAT   VSZ %VSZ CPU %CPU COMMAND
    1     0 root     S     4404  0.0   2  0.0 sh
    7     1 root     R     4404  0.0   5  0.0 top

・キーボードの「Ctrl+C」を押します。

プロンプトに戻ります。

/ # 

BusyBoxを終了させる

BusyBoxを終了させるには「exit」コマンドを使います。

・「exit」と入力します。

PowerShellのプロンプトに戻ります。

/ # exit
PS C:\Users\joeac>

・「top」コマンドを入力します。

PS C:\Users\joeac> top
top: The term 'top' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
PS C:\Users\joeac>

PowerShellでは、今のところ「top」コマンドが使えないため、エラーが表示されます。

コンテナの確認

・「docker container ls -a」コマンドを実行します。

PS C:\Users\joeac> docker container ls -a
CONTAINER ID   IMAGE         COMMAND                   CREATED        STATUS                        PORTS                NAMES
880801d6c991   whale-image   "nginx -g 'daemon of…"   27 hours ago   Exited (255) 23 minutes ago   0.0.0.0:80->80/tcp   whale-container
e02537ac9086   base-image    "nginx -g 'daemon of…"   28 hours ago   Exited (0) 27 hours ago                            base-container

IMAGE列に「busybox」がありません。

これは、「busybox」がベースイメージとなっているコンテナが存在しないことを意味しています。

 「--rm」オプションを指定してコンテナを起動させてたので、「busybox」コンテナが削除されていること分かります。

BusyBoxは、ちょっと、Linuxのコマンドを使ってみて、使い捨てする場合に便利なツールとなります。