このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Docker入門】BusyBoxコンテナを使ってみる
「docker run -it --rm busybox
」コマンドの概要
BusyBoxコンテナの利用方法は、次のコマンドで行います。
docker run -it --rm busybox
このコマンドはBusyBoxコンテナを起動し、ユーザーをルートとしてコンテナ内のシェルに接続します。これにより、Linuxコマンドを使用して作業を行うことができます。コマンドを実行すると、BusyBoxが含む標準的なLinuxコマンドを利用できます。作業が終了すると、コンテナは自動的に削除されます。
このコマンドのそれぞれのオプションは、次のように解釈されます。
【コマンド】
docker run | -it | --rm | 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のコマンドを使ってみて、使い捨てする場合に便利なツールとなります。