LinuCレベル1 101試験の例題と解説
1.01.2仮想マシン・コンテナの概念と利用
LinuCレベル1 101試験の出題範囲から、「1.01.2 仮想マシン・コンテナの概念と利用」についての例題を解いてみます。
コンテナの起動について学んでおきましょう。
例題
取得済みのnginxのコンテナイメージからコンテナを作成し、起動までできるコマンドを一つ選択してください。
- docker create nginx
- docker run nginx
- docker start nginx
- docker exec nginx
※この例題は実際の試験問題とは異なります。
解答と解説
正解は、「2. docker run nginx」です。
Dockerを使ったコンテナの起動には、「docker run」または「docker start」が利用できます。しかし、この二つには違いがあります。
「docker start」はコンテナの起動のみを行います。そのため、起動するためのコンテナがすでに作成されている必要があります。
一方、「docker run」は、コンテナの作成から起動までを行います。つまり、内部的には「docker create」と「docker start」が実行されることになります。
今回の問題では、「nginxのコンテナイメージからコンテナを作成し、起動まで」とあるので、「2. docker run nginx」が正解となります。
それでは、例題の選択肢について解説します。
1.docker create nginx
不正解です。
「docker create」は、コンテナを作成するコマンドです。
以下は実行例です。
▼nginxコンテナイメージからコンテナを作成
# docker create nginx
44abd1ce9f7f1c145bf72a07fdce68fd4a77b01537256a508dfff90d0b849fde
▼作成されたコンテナを確認
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
44abd1ce9f7f nginx "/docker-entrypoint.…" 4 seconds ago Created unruffled_wozniak
このように、nginxというコンテナイメージからコンテナが作成されます。
ただし、起動まではされないため不正解となります。
2.docker run nginx
正解です。
前述の通り、「docker run」はコンテナの作成から起動までを行います。
よって正解となります。
3.docker start nginx
不正解です。
前述の通り、「docker start」はコンテナの起動だけを行います。
例えば、コンテナが作成されていない状態で「docker start」を実行した場合、以下のようなエラーになります。
▼コンテナがない状態でstartを実行
# docker start nginx
Error response from daemon: No such container: nginx
Error: failed to start containers: nginx
コンテナを作成する場合は、別途「docker create」で作成する必要があるため不正解です。
4.docker exec nginx
不正解です。
「docker exec」は起動中のコンテナ内でコマンド実行するために利用するコマンドです。コンテナの作成や起動はできないため不正解です。
dockerサブコマンドは、このほかにも様々な種類があります。startとrunのように、同じ意味を持っていそうなサブコマンドでも少し動作が変わってくる場合もあります。実際に動かしてみて理解を深めるようにしましょう。
例題作成者
株式会社デージーネット OSS研究室 橋本知里