LinuCレベル2 201試験の例題と解説

主題2.06コンテナ

2.06.2Dockerコンテナとコンテナイメージの管理

LinuCレベル2 201試験の出題範囲から「2.06.2 Dockerコンテナとコンテナイメージの管理」についての例題を解いてみます。

Linucレベル2 201試験 出題範囲


例題

あるサーバにインストールされているコンテナの中に「linuc.txt」というファイルが存在するかどうかを確認したい。以下のコマンドを並び替えた時、確認の順序として適切なものはどれか。1-5の選択肢の中から1つ選べ。また、[コンテナID]は事前に把握できていないものとする。

a. docker exec -it [コンテナID] /bin/bash
b. exit
c. find / -name linuc.txt
d. docker ps
e. docker images

  1. a→e→c→b
  2. d→a→c→b
  3. a→b→d→c
  4. c→d→a→b
  5. e→a→c→b

※この例題は実際の試験問題とは異なります。


解答と解説

正解は、「2. d→a→c→b」です。

Dockerは、Docker Hubなどのコンテナレポジトリからコンテナイメージを取得し、それをベースにコンテナを作成します。
a,d,eのdocker関連のコマンドは、それぞれ以下の意味を持ちます。

  • docker exec : 既に実行中のDockerコンテナ内で新たなコマンドを実行する
  • docker ps : 起動中のコンテナの一覧を表示する
  • docker images : ローカルに存在するDockerイメージの一覧を表示する

以下、コマンドの操作例です。

・docker exec

root@linuc:~# docker exec -it b875a5fce2c8 /bin/bash
root@b875a5fce2c8:/#

上記のように-itオプションを使用することで、対話式のbashシェルを開始することが可能となり、インタラクティブなシェルセッションを実現できます。

・docker ps

root@linuc:~# docker ps
CONTAINER ID   IMAGE                        COMMAND   CREATED        STATUS        PORTS                                                                          NAMES
b875a5fce2c8   jitsi/web:stable-10431       "/init"   5 hours ago    Up 5 hours    0.0.0.0:80->80/tcp, [::]:80->80/tcp, 0.0.0.0:443->443/tcp, [::]:443->443/tcp   jitsi-docker-jitsi-meet-2b459c5-web-1
fae30d17bcc9   jitsi/jicofo:stable-10431    "/init"   26 hours ago   Up 24 hours   127.0.0.1:8888->8888/tcp                                                       jitsi-docker-jitsi-meet-2b459c5-jicofo-1
083ead546356   jitsi/jvb:stable-10431       "/init"   26 hours ago   Up 24 hours   127.0.0.1:8080->8080/tcp, 0.0.0.0:10000->10000/udp, [::]:10000->10000/udp      jitsi-docker-jitsi-meet-2b459c5-jvb-1
b72043017afc   jitsi/prosody:stable-10431   "/init"   26 hours ago   Up 24 hours   5222/tcp, 5269/tcp, 5280/tcp, 5347/tcp

コンテナID,イメージ名,コンテナ内で実装されているコマンド,コンテナ作成日時,ステータス,公開ポート,コンテナ名を取得できます。

・docker images

root@linuc:~# docker images
REPOSITORY      TAG            IMAGE ID       CREATED       SIZE
jitsi/jvb       stable-10431   9c353f0e990b   5 weeks ago   801MB
jitsi/jicofo    stable-10431   d515d975b36a   5 weeks ago   662MB
jitsi/prosody   stable-10431   3e2b14329092   5 weeks ago   209MB
jitsi/web       stable-10431   76252f80a114   5 weeks ago   327MB

レポジトリ,タグ,イメージID,イメージ作成日時,サイズを取得できます。

各選択肢の解説は次の通りです。

1. a→e→c→b
誤りです。
本選択肢ではdocker psではなくdocker imagesでコンテナIDを取得しようとしています。imagesはコンテナイメージの情報を取得するコマンドであり、実行中のコンテナそのものの情報を取得するコマンドではありません。そのためdocker imagesを使用してもコンテナIDは取得できないという点で、本選択肢は誤りとなります。

2. d→a→c→b
正解の選択肢となります。
docker psでコンテナIDを取得したうえでdocker execを実行しており、b875a5fce2c8というコンテナ内でfindコマンドを使用することで、linuc.textファイルが存在するかどうか確認を行っています。また、確認後の後処理としてexitコマンドでコンテナ外に移動しています。

3. a→b→d→c
誤りです。
d→aの順番となっていません。また、3の順番でコマンドを実行すると、cのコマンドをコンテナ外で実行することとなり、コンテナ内にファイルが存在するかどうかの確認を行うことができません。

4. c→d→a→b
誤りです。
cのコマンドをコンテナ外で実行してしまっています。コンテナ内にlinuc.textが存在するかを確認したいため、cのコマンドはコンテナ内で実行する必要があります。

5. e→a→c→b
誤りです。
本選択肢においても、1と同様docker psではなくdocker imagesでコンテナIDを取得しようとしています。1と同様docker imagesを使用してもコンテナIDは取得できないという点で、本選択肢は誤りとなります。

dockerコンテナを管理するためのコマンドを覚え、コンテナを適切に利用できるようにしておきましょう。


例題作成者

株式会社デージーネット 経営企画室 大河内 龍馬

ページトップへ