このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Docker超入門:Docker ComposeでUbuntuコンテナを構築する方法

🐧 Docker ComposeでUbuntuコンテナを構築する方法
ここでは、Docker Compose を使って Ubuntuコンテナ を構築する方法をわかりやすく解説していきます。
UbuntuはLinux学習にもピッタリの環境なので、Composeを使ってサクッと構築できるようになっておくととても便利ですよ!
ここで学ぶ内容

💡 Ubuntuとは?
まずはちょっとだけUbuntuのおさらいから。
Ubuntu(ウブントゥ)は、Linuxディストリビューションの一つで、カノニカル社が開発・提供しています。
使いやすいUIと安定性の高さで人気があり、サーバー用途からデスクトップまで幅広く使われています。
| 特徴 | 内容 |
|---|---|
| ベース | Debianをベースに開発されている。 |
| 提供元 | カノニカル社(Canonical Ltd.) |
| リリース周期 | 半年ごとに新バージョンを公開 |
| 主な用途 | デスクトップ、サーバー、クラウド環境など |
🔗 公式サイト:https://jp.ubuntu.com/

🎓 Ubuntuコンテナは学習にも最適!
UbuntuはLinuxの操作を学ぶ環境としても非常に人気があります。
理由は次のとおりです👇
| 理由 | 詳細 |
|---|---|
| 使いやすい | コマンド体系がわかりやすく、初心者でも扱いやすい。 |
| 情報が豊富 | ドキュメントやチュートリアルが大量にある。 |
| コミュニティ | 困ったときに助けてもらえるフォーラムやDiscordが活発 |
| 失敗しても安心 | コンテナなので壊してもすぐ作り直せる。 |
つまり、「気軽に試して学べるLinux」 なんです。
失敗しても docker compose down で削除 → up で再構築できるので安心です。
🧹 作業前のクリーンアップ
まずは、Docker環境をスッキリさせてから始めましょう。
古いコンテナやイメージが残っていると動作確認のときに混乱する原因になります。
コマンド書式
docker system prune -a --volumes| オプション | 説明 |
|---|---|
| -a | すべての未使用イメージも削除する。 |
| --volumes | 未使用のボリュームも削除する。 |
このコマンドを実行すると、停止中のコンテナ・古いイメージ・未使用ネットワークが一気に削除されます。
削除前に Are you sure you want to continue? [y/N] と聞かれるので、y を入力して実行します。
実行結果
PS C:\Users\joeac> docker system prune -a --volumes
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all anonymous volumes 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もし、ボリュームなどのDockerオブジェクトが残っていれば、Docker Desktopを使ってGUIで削除しておきましょう。
💬 補足:
コマンド操作に慣れていない場合は、Docker DesktopからGUIで削除してもOKです。
クリック操作で視覚的に削除できるのでわかりやすいですよ。
📁 compose.yamlファイルの作成
続いて、Ubuntuコンテナを作るための Composeファイル(compose.yaml) を作成します。
1.ディレクトリを作成して移動
cd desktop/docker
mkdir ubuntu
cd ubuntu実行結果
PS C:\Users\joeac> cd desktop/docker
PS C:\Users\joeac\Desktop\docker> mkdir ubuntu
Directory: C:\Users\joeac\Desktop\docker
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2025/10/12 23:23 ubuntu
PS C:\Users\joeac\Desktop\docker> cd ubuntu
PS C:\Users\joeac\Desktop\docker\ubuntu>これで C:\Users\<ユーザー名>\Desktop\docker\ubuntu に移動できました。
2.VS Codeを起動してファイルを作成
code compose.yamlVSCodeが起動します。

VS Codeが起動したら、以下の内容を入力して保存します👇
🧾 compose.yaml の内容
services:
ubuntu:
image: ubuntu:latest
container_name: ubuntu_container
tty: true| フィールド | 説明 |
|---|---|
| services | Composeファイル内で定義するサービス(コンテナ)をまとめるセクション |
| ubuntu | サービス名(コンテナ識別名) |
| image | 使用するDockerイメージ(ここではUbuntu 22.04) |
| container_name | 作成するコンテナの名前(ubuntu_container) |
| tty | 仮想端末(TTY)を割り当てて、コンテナをフォアグラウンド実行状態に保つ設定 |
💡 ポイント:
通常、プロセスが終了するとコンテナも停止してしまいます。
しかしtty: trueを指定すると、常に端末が開かれた状態になるため、コンテナが落ちずに操作を続けられます。
🚀 コンテナを作成して実行
ファイルを保存したら、いよいよコンテナを起動します。
コマンド書式
docker compose up -d| オプション | 説明 |
|---|---|
| up | Composeファイルの内容に基づいてコンテナを作成・起動する。 |
| -d | デタッチドモード(バックグラウンド実行) |
実行結果
PS C:\Users\joeac\Desktop\docker\ubuntu> docker compose up -d
[+] Running 2/2
✔ ubuntu Pulled 6.8s
✔ 4b3ffd8ccb52 Pull complete 3.4s
[+] Running 2/2
✔ Network ubuntu_default Created 0.1s
✔ Container ubuntu_container Started 0.6s
PS C:\Users\joeac\Desktop\docker\ubuntu>ubuntu_container Started と表示されたら、Ubuntuコンテナが正常に起動しています🎉
💻 Ubuntuコンテナに接続してみよう
起動したコンテナに入るには、次のコマンドを使います👇
コマンド書式
docker compose exec [options] [service] [command]| 引数 | 説明 |
|---|---|
| options | オプション(例:-u でユーザー指定、-T でTTY無効) |
| service | 実行対象のサービス名(ここでは ubuntu) |
| command | コンテナ内で実行するコマンド |
例:Ubuntuのディレクトリ構成を確認
docker compose exec ubuntu ls実行結果
PS C:\Users\joeac\Desktop\docker\ubuntu> docker compose exec ubuntu ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr varこのように表示されたら、Ubuntuコンテナのファイルシステムにアクセスできています。
まさに「自分だけのUbuntuマシン」が出来上がった感じですね!
🧠 まとめ
Docker Composeを使えば、ほんの数行のYAMLファイルでUbuntu環境を構築できます。
今回のポイントをおさらいしましょう👇
| 手順 | 内容 |
|---|---|
| 1 | docker system prune -a --volumes で環境をクリーンに |
| 2 | compose.yaml にUbuntuイメージを定義 |
| 3 | docker compose up -d で起動 |
| 4 | docker compose exec ubuntu bash で接続 |
Composeを使うことで、設定ファイルひとつで再現性のあるUbuntu環境をいつでも立ち上げられます。
学習用・検証用のLinux環境をサクッと作りたいときは、この方法が一番スマートです!
