【LinuC 201試験】2.06 コンテナのまとめ②|Linux初学者向け解説【Dockerコマンド・docker run・Dockerfile】

※本ページはプロモーションが含まれています

こんにちは!いつもブログを読んでいただき、ありがとうございます。

前回の記事では「2.06 コンテナのまとめ①」として、コンテナの仕組み・仮想マシンとの違い・namespace・cgroupsを解説しました。まだご覧になっていない方は先にそちらをどうぞ!

👉 2.06 コンテナのまとめ①(コンテナの仕組み・仮想マシンとの違い)

後半の今回は Dockerコンテナの操作コマンドとDockerfileの書き方 を中心に解説します。

「Dockerのコマンドが多すぎて覚えられない…」という方、大丈夫です!この記事では試験に出やすいコマンドに絞って整理しているので、まずは 太字のコマンドと主要オプション だけ押さえることを目標にしましょう。

LinuC 201全体の学習ロードマップはこちらにまとめています♪

👉 【LinuC 201】独学合格へのロードマップ!勉強方法と出題範囲の全体像まとめ


📋 試験の重要情報と学習のゴール

まずは、この主題で絶対に外せない「キーワード」を確認しましょう。

項目内容
主題番号2.06.2 Dockerコンテナとコンテナイメージの管理
重要度3(5段階中)
頻出キーワードdocker rundocker psdocker imagesdocker builddocker pulldocker exec、Dockerfile

重要度3は「試験全体のなかで出題比率が高め」という意味です。docker run のオプションDockerfileのインストラクションが特によく出るので、ここを重点的に押さえましょう!


1. Dockerの基本構造をおさらい|★★★

Dockerのコマンドはイメージ操作コンテナ操作の2つに大別されます。まずこの分類を頭に入れてから、個別のコマンドを見ていきましょう。

種別主なコマンド
イメージ操作docker pulldocker imagesdocker rmidocker build
コンテナ操作docker rundocker psdocker stopdocker rmdocker execdocker logs

★ここがポイント! rmi は「remove image(イメージ削除)」、rm は「remove(コンテナ削除)」です。i があるかどうかで区別しましょう!

📝 補足:現在のDockerエンジンは内部で containerd などのコンテナランタイムを利用しています。ただし LinuC試験では従来の docker コマンドの理解を優先すれば問題ありません!


2. コンテナイメージの操作|★★★

イメージの取得・確認・削除

# Docker Hubからイメージを取得する
docker pull nginx
docker pull ubuntu:22.04        # タグ(バージョン)を指定する場合

# ローカルのイメージ一覧を表示する
docker images
docker image ls                 # 新しい書き方(同じ意味)

# イメージを削除する
docker rmi nginx
docker rmi ubuntu:22.04

📝 試験ポイントdocker pull でタグを省略すると、自動的に latest(最新版) が取得されます。ただし latest は必ずしも最新版を保証するものではないため、実務ではバージョンを明示して指定するのが推奨されます。実行中のコンテナが使っているイメージは削除できません。

📝 補足:現在は docker image ls のようにオブジェクトを明示する書き方が推奨されていますが、試験では従来の docker images も頻出です。どちらの書き方も読めるようにしておきましょう!


3. コンテナの起動と操作|★★★ 最頻出!

docker run — コンテナを起動する

docker run は試験で最も問われるコマンドです。毎回新しいコンテナを作成して起動するという点を押さえておきましょう(停止中の既存コンテナを再起動するのは docker start です)。オプションの意味をしっかり覚えましょう!

docker run nginx                          # フォアグラウンドで起動
docker run -d nginx                       # バックグラウンドで起動
docker run -it ubuntu:22.04 /bin/bash     # 対話的にbashを起動
docker run --name mycontainer nginx       # コンテナに名前をつける
docker run -p 8080:80 nginx               # ポートマッピング(ホスト:コンテナ)
docker run -v /data:/var/www/html nginx   # ボリュームマウント(ホスト:コンテナ)
docker run --rm nginx                     # 停止後にコンテナを自動削除

docker run 主要オプション早見表(ここ、試験に出ます!)

オプション意味
-dバックグラウンド(デタッチ)で実行
-it対話的なターミナルを割り当てる(-i + -t の組み合わせ)
--nameコンテナに名前をつける
-p ホスト:コンテナポートマッピング(ホスト:コンテナの順番。逆にしないよう注意!)
-v ホスト:コンテナボリュームマウント
--rmコンテナ停止後に自動削除
-e環境変数を設定する

★ここがポイント! -it はセットで使うことが多いオプションです。-i(標準入力を保持)と -t(疑似ターミナルを割り当て)の組み合わせで、コンテナの中でコマンド操作ができるようになります。

📝 試験ポイント:指定したイメージがローカルに存在しない場合、docker run は自動的に docker pull を実行してからコンテナを起動します。


docker ps — コンテナ一覧の確認

# 実行中のコンテナだけ表示する
docker ps

# 停止中を含む全コンテナを表示する(試験頻出!)
docker ps -a

📝 試験ポイントdocker ps だけでは実行中のコンテナしか表示されないため、停止中のコンテナを確認したいときは必ず -a をつけましょう。


コンテナの停止・削除

# コンテナを正常停止する(SIGTERMを送る)
docker stop コンテナ名

# コンテナを強制停止する(SIGKILLを送る)
docker kill コンテナ名

# コンテナを削除する(停止済みのもののみ)
docker rm コンテナ名

# 実行中のコンテナに入る
docker exec -it コンテナ名 /bin/bash

# コンテナのログを表示する
docker logs コンテナ名

# リアルタイムでログを流す(tailのような動作)
docker logs -f コンテナ名

⚠️ stopkill の違いdocker stopSIGTERM で正常終了を待ちます。docker killSIGKILL を送って即座に強制終了します。試験でこの違いが問われることがあります。

📝 試験ポイントdocker execすでに起動中のコンテナに対して使います。新しくコンテナを起動する docker run との違いをしっかり区別しましょう。


4. Dockerfileの書き方|★★★

Dockerfile は、独自のコンテナイメージを作るための設計書です。

# ベースイメージを指定する(必須・最初に書く)
FROM ubuntu:22.04

# コンテナビルド時にコマンドを実行する(パッケージのインストールなど)
RUN apt-get update && apt-get install -y nginx

# ファイルをコンテナ内にコピーする
COPY index.html /var/www/html/

# コンテナが使用するポートを明示する
EXPOSE 80

# コンテナ起動時に実行するコマンドを指定する
CMD ["nginx", "-g", "daemon off;"]

Dockerfileの主要インストラクション(ここ、試験に出ます!)

インストラクション役割
FROMベースイメージの指定(必須・最初に書く)
RUNビルド時にコマンドを実行(レイヤーが追加される)
COPYホストのファイルをイメージにコピー
CMDコンテナ起動時のデフォルトコマンド(docker run の引数で上書き可能
ENTRYPOINTコンテナ起動時に必ず実行されるコマンド(docker run --entrypoint で上書き可能だが、通常は固定コマンドとして使われる)
EXPOSE使用するポートを明示する

★ここがポイント! CMD と ENTRYPOINT の違い

  • CMDdocker run のコマンド引数で上書きできる
  • ENTRYPOINTdocker run --entrypoint オプションで上書きできるが、通常は固定コマンドとして使われる

試験では「CMDは上書き可能、ENTRYPOINTは原則固定」という対比でよく問われます!

docker build — イメージをビルドする

# カレントディレクトリの Dockerfile からイメージをビルドする
docker build -t myapp:1.0 .
#             ↑タグ名      ↑Dockerfileのある場所(カレントディレクトリ)

📝 実務ポイント補足(試験範囲外だけど知っておくと理解が深まります)

  • ファイルコピーには ADD より COPY が推奨されています(意図が明確で予測しやすいため)
  • RUN を複数行に分けるとレイヤーが増えてイメージが大きくなるため、&& でまとめて書くのが一般的です

試験では深く問われないので、「そういう考え方がある」程度の理解でOKです!


試験で狙われる!引っかけポイントまとめ 💣

Dockerのコマンドは名前が似ているものが多く、ひっかけ問題の宝庫です。問題集で一度アウトプットしておくと定着度がぐっと上がりますよ!

【PR】▶ スピードマスター LinuCレベル2問題集(白本)

リンク(※ここに白本のアフィリエイトリンクを挿入)

過去問を解いていて「ここ、引っかかりそう!」と感じたパターンをまとめました。試験直前に見直してくださいね。

#間違いパターン正しい理解
1docker ps で停止中のコンテナも表示される」❌ 表示されるのは実行中のみ。停止中も見るには -a が必要
2docker rm でイメージを削除できる」docker rmコンテナの削除。イメージの削除は docker rmi
3docker exec で新しいコンテナを起動できる」docker exec実行中のコンテナに命令する。新規起動は docker run
4docker stop は即座に強制終了する」stop はSIGTERMで正常終了を待つ。即座に強制終了は docker kill
5「CMDに指定したコマンドは上書きできない」CMDdocker run の引数で上書き可能。原則固定なのは ENTRYPOINT
6docker pull でタグを省略するとダウンロードされない」❌ タグを省略すると latest(最新版) が自動的に取得される
7docker run はローカルにイメージがないと失敗する」❌ ローカルになければ自動的に docker pull してから起動する
8docker run で停止中の既存コンテナを再起動できる」docker run新しいコンテナを作成して起動する。既存コンテナの再起動は docker start

🎓 一緒に使っている教材はこちら

私がメインで使っている参考書と問題集です。よければ一緒に勉強していきましょう(笑)

【PR】▶ あずき本(Linux教科書 LinuCレベル2 Version 10.0対応) 概念や仕組みをしっかり理解したいときの辞書代わりに。まずここで基礎を固めます。

【PR】▶ スピードマスター LinuCレベル2問題集(白本) 本番に近い難易度で問題演習したいときに。あずき本で理解したあとに使うと定着度が上がります。


✅ まとめ

お疲れ様でした!今回のポイントをおさらいしましょう。

Dockerの主要コマンド

コマンド何をするか
docker pullイメージを取得する
docker imagesイメージの一覧を表示する
docker rmiイメージを削除する
docker build -t 名前 .Dockerfileからイメージをビルドする
docker run [オプション] イメージ名コンテナを起動する
docker ps / docker ps -aコンテナ一覧(実行中のみ/全件)
docker stop / docker kill正常停止(SIGTERM)/ 強制停止(SIGKILL)
docker rmコンテナを削除する
docker exec -it コンテナ名 bash実行中コンテナに入る

Dockerfileの主要インストラクション

インストラクション役割
FROMベースイメージを指定(必須)
RUNビルド時にコマンドを実行
COPYファイルをイメージにコピー
CMD起動時のデフォルトコマンド(上書き可能
ENTRYPOINT起動時に必ず実行されるコマンド(--entrypoint オプションで上書き可能だが原則固定)

コンテナのまとめ①もあわせて復習しておくと、知識がしっかりつながります!

👉 2.06 コンテナのまとめ①(コンテナの仕組み・仮想マシンとの違い)

これで主題2.06「コンテナ」は2記事完走です!LinuC 201の全主題を学び終えましたね。あとはPing-tでしっかり問題演習を積んで、合格を目指しましょう!

皆さんにとって、今日も素敵な1日になりますように!


参考:LPI-Japan 公式試験範囲 https://linuc.org/linuc2/range/201.html

※本記事はLinuC レベル2 Version 10.0 の出題範囲をもとに作成しています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA