LoginSignup
5
3

More than 1 year has passed since last update.

【Docker】run コマンドをさらに詳しく。runとstart の違い。no.4

Posted at

パンプキン カフェ (2).png

こんにちは。まゆみです。

Docker に関する記事をシリーズで書いています

Dockerを使っている方なら、コマンド『run』を使わない日はないですよね。

ただ、Docker にはrun の他に『start』コマンドもあり、両者は似て非なるものです。

今回の記事では

run と start コマンドの違い

を詳しく解説していきたいと思います。

ではさっそく始めていきますね。

run コマンド

run コマンドは実は、二つのコマンドの機能が組み合わさってできています。

run = create + start

見出しを追加 - 2021-05-29T100042.926.png

Docker Container を最初から作ってデフォルトのコマンドまで実行したい時は run

既にDocker Container が作られている時、そのContainer を実行するには start

ということになります

runがcreate と start が組み合わさってできているものだと分かったところで、ではcreate とstart は何をしているのか見てみましょう

create とstartがしていること

1.png

create というのはDocker Image からContainer を作りますが、その時Docker Imageにあるファイルシステムのスナップショットを引っ張ってきてContainerを作ってくれます。

create の仕事はここまでです。

Image のなかにはそれぞれ、デフォルトのコマンドがプログラムされていて、それが 『start』のコマンドをうつことによって実行されます

では実際にhello-world のContainer を

run

create + start

でそれぞれ実行してみましょう

run で実行

2021-05-29_10-49-00.png

docker run hello-world

でデフォルトコマンドの実行までしてくれます

create とstart で実行

2021-05-29_10-52-36.png

①docker create hello-world を実行すると、Container ID のみ返されます。

②docker start を実行すると、Container ID のみ返されます

③docker start -a で実行すると、デフォルトのコマンドを表示して実行してくれます

ということで、

run = create + start

であるわけですが、

run は-a を付けなくても、デフォルトのコマンドを表示してくれるのに対して、start は -a を付けないとデフォルトのコマンドを表示してくれない

という違いもありますので、頭の片隅に置いておいてくださいね。

デフォルトのコマンドを上書きした場合はどうなるか?

docker run <container ID> (別のコマンド)

でデフォルトのコマンドを(別のコマンド)に上書きする事ができます

ただ、そのコマンドがContainer の元になっているImageのファイルシステムにない場合は上書きする事はできません。

例えば、hello-world はechoのコマンドが入っていないので、

docker run hello-world echo hi

としても、

hi を返してくれません。

ただ、『busybox』Imageには、ファイルシステムにecho のコマンドが入っているのでデフォルトのコマンドをechoのコマンドに上書きする事ができます。
(下記参考)

2021-05-29_11-50-38.png

busyboxを使ってcreate とstartによってContainer を作ったあと、デフォルトのコマンドと上書きしたコマンドがどうなるか見てみましょう

2021-05-29_11-39-54.png

上の実行結果のスクショから

①createでデフォルトのコマンドが『echo hi』に上書きされたContainer を作る

②start -a でContainer を実行すると、上書きされたコマンドの実行結果を返される

③ただ、さらに上書きする事はできない

ただ、run コマンドでは毎回上書きされたコマンドが表示されます。

2021-05-29_11-44-36.png

なぜなら、run では、Image から引っ張ってきてContainerを新たに作るからです。

まとめ

今回の記事はここで締めくくらせていただきます

runとstart の違いを理解するのにお役に立てたなら幸いです。

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3