このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Docker入門】Debianコンテナ
ここでは、Docker Composeコマンドを使ったDebianコンテナの構築例を紹介します。
Debianとは
まず、簡単にDebianについて簡単に説明しておきます。
Debian(デビアン)は、LinuxディストリビューションのひとつであるオープンソースのOSソフトウェアです。1993年に誕生し、セキュリティと安定性に重点を置いていることから、サーバー用途からデスクトップ用途まで幅広く利用されています。Debianは、パッケージ管理システムであるAPT(Advanced Package Tool)を使用しています。
学習環境としてのDebianコンテナ
Debianは、Linuxディストリビューションの中でも非常に人気が高いディストリビューションです。その人気の理由は、Debianは安定性と信頼性に重点を置いており、長期サポートと厳格な品質管理が行われているからです。
DebianコンテナはLinuxの学習環境としても最適ですし、Debianに気軽に触ってみたい方におススメなコンテナです。
Debianコンテナの作成
「compose.yaml」を作成して、Debianコンテナを作成します。
不要なDockerオブジェクトの削除
まず、不要なDockerオブジェクトをすべて削除しておきます。
以下のコマンドを実行します。
・「docker system prune -a」コマンドを実行します。
Are you sure you want to continue? [y/N] の質問には「y」と入力します。
PS C:\Users\joeac> docker system prune -a
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all images without at least one container associated to them
- all build cache
Are you sure you want to continue? [y/N] y
Deleted Containers:
(略)
・「docker system prune -a」コマンドで削除されなかったDockerオブジェクトは、個別に削除しておきます。
環境によって削除されずに残っているDockerオブジェクトは異なります。
compose.yaml の作成
ディレクトリの作成と移動
Docker Composeでコンテナを作成するには、「compose.yaml」ファイルが必要になります。
デフォルトでは、カレントディレクトリにある「compose.yaml」ファイルが読み込まれるため、作業ディレクトリに移動しておきます。
・「cd desktop/docker」コマンドを実行します。
PS C:\Users\joeac> cd desktop/docker
PS C:\Users\joeac\Desktop\docker>
「compose.yaml」ファイルを保存する「debian」ディレクトリを作成して、作成したディレクトリに移動します。次のコマンドを実行します。
- 「mkdir debian」コマンド
- 「cd debian」コマンド
PS C:\Users\joeac\Desktop\docker> mkdir debian
Directory: C:\Users\joeac\Desktop\docker
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2024/04/14 2:25 debian
PS C:\Users\joeac\Desktop\docker> cd debian
PS C:\Users\joeac\Desktop\docker\debian>
VSCodeの起動
VSCodeで「compose.yaml」ファイルを作成します。
・「code compose.yaml」コマンドを実行します。
PS C:\Users\joeac\Desktop\docker\debian> code compose.yaml
VSCodeが起動します。
「compose.yaml」ファイルの編集
・「compose.yaml」ファイルを以下のように編集して保存します。
services:
debian:
image: debian:12.5
container_name: debian_container
tty: true
定義内容の解説
「compose.yaml」ファイルの定義を解説します。
フィールド | 説明 |
---|---|
services | サービスの定義を開始するセクション |
debian | サービスの名前 |
image | 使用するDockerイメージを指定するフィールド |
debian:12.5 というタグのDebianイメージを使用することを指定 | |
container_name | コンテナに付ける名前を指定するフィールド |
debian_container という名前を持つコンテナを作成することを指定 | |
tty | コンテナにTTY(端末)を割り当てるかどうかを指定するブール値のフィールド |
true に設定されており、コンテナにTTYを割り当てることを指定 |
この「compose.yaml
」ファイルは、1つのサービス(debian
)を定義しています。このサービスは、Debian 12.5のDockerイメージを使用し、debian_container
という名前のコンテナを作成します。また、コンテナにTTYを割り当てるように設定されています。
コンテナとの対話処理
Dockerコンテナが起動後にすぐに終了してしまう問題は、コンテナがフォアグラウンドで実行されるプロセスがないために発生します。通常、Dockerコンテナは、コンテナ内で実行されるプロセスが終了すると自動的に停止します。このため、コンテナ内に入って作業を行うためには、コンテナが起動したままである必要があります。
tty
を設定することで、この問題を解決できます。「tty: true
」を設定すると、コンテナにTTY(端末)が割り当てられ、コンテナがフォアグラウンドで実行されたかのように振る舞います。つまり、コンテナが起動した後も実行中のプロセスがない場合でも、コンテナが終了することがありません。その結果、ユーザーはコンテナ内に入ってコマンド操作を行うことができます
対話的な操作が必要な場合に、「tty: true
」を設定します。
コンテナの作成と実行
「docker compose up -d」コマンドを実行します。
このコマンドは、「compose.yaml」ファイルを配置した場所で実行する必要があります。
PS C:\Users\joeac\Desktop\docker\debian> docker compose up -d
[+] Running 2/2
✔ debian 1 layers [⣿] 0B/0B Pulled 6.1s
✔ 609c73876867 Pull complete 1.5s
[+] Running 1/2
- Network debian_default Created 0.5s
✔ Container debian_container Star... 0.4s
Debianコンテナへの接続
「docker compose exec
」コマンドを使用すると、実行中のコンテナ内でコマンドを実行したり、インタラクティブなシェルセッションを開始したりすることができます。
【構文】docker compose exec [options] [service] [command]
options
: オプションを指定する場合があります。例えば、-u
オプションを使用してユーザーを指定したり、-T
オプションを使用してTTYの割り当てを制御したりします。service
: 実行するコマンドが属するサービス名を指定します。command
: 実行するコマンドを指定します。このコマンドは、指定されたサービス内で実行されます。
「docker compose exec debian ls」コマンドを実行します。
Debianコンテナのディレクトリ構成を確認します。
PS C:\Users\joeac\Desktop\docker\debian> docker compose exec debian ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
PS C:\Users\joeac\Desktop\docker\debian>