3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Docker】Dockerfileの概要と作り方の簡単な説明 no.6

Posted at

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

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

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

今回の記事では、

  • Dockerfileの概要
  • Dockerfileの作り方

に焦点を置いて書いていこうと思います

Dockerfileについての初めての記事になりますので、表面的な内容のみを扱って書いていきますね。

ではさっそく、はじめて行きます。

#Dockerfile とは?

Docker hub (1).png

第一回目の記事では、他のエンジニアが書いてくれたDockerfileをDocker hub から引っ張ってきて、Docker Imageを作ることを紹介しました。

今回の記事では、他のエンジニアが書いたfile ではなく、自らDockerfileを書いていきます。

上記のイラストでは、一番左にある黄緑色の『Dockerfile』と書いてあるところですね。

Dockerfileとは、Docker Imageの設計図となるものです。

では、実際にどのようにその設計が書かれているのか、Docker hubにあるDockerfile の中身を見てみましょう

##実際のDockerfile の中身は?

Dockerfileはどれも同じようなパターンで書かれていますので、まずDocker hub にあるubuntuのDockerfileの中身を見て、Dockerfile のパターンに慣れてみましょう

2021-05-30_12-33-38.png

2021-05-30_12-36-20.png

Instruction.png

Dockerfile の書き方のパターンはざっくり上のようになります。

大文字でコードの文頭に書かれているのが、『Instruction』と言われるもので、何をするのかの指示になります。(それぞれのInstructionについては後で、一つづつ詳しく解説します)

その後に続くのが『Argument(引数)』と呼ばれるものです。

では、シンプルなDockerfileを作りながら

それぞれのInstructionが何をするように指示しているのか?

それぞれのプロセスでは何が起こっているのか

解説していきます

まずは簡単なDockerfileを作ります

#Dockerfileを作る

my_first_image.png

mkdir my_first_image
cd my_first_image
code .

①何か好きな名前のディレクトリーを作り(場所はどこで作っても良いです)
②そのディレクトリーのなかに入り
③そこで、エディターを開いてください。

私は、Visual Studio Code の設定を変えてますので

code .

で、カレントディレクトリ―内でエディターを開けますが、そのような設定をしていない方は、上記のコードをうってもエディターは開きません。

とにかく、作ったディレクトリー内でエディターを開いてくださいね。

次にそのディレクトリー内に

Dockerfile

を作ってください。

下のようになります。ファイル名を『Dockerfile』とすると、Dockerのアイコンが表示されますので、そうなればOKです。

2021-05-31_8-45-05.png

そのあと、エディターに次のように書きます。
それぞれのコードが何を意味しているかは、後述するので、今はとりあえず下のように書いてみてください。

2021-05-31_9-01-12.png

コマンドラインに戻り、

今現在、先ほどあなたが作ったディレクトリーにいること

その中にDockerfileがあることを確認

します。

そしてその後

docker build .

と打ってください。

docker build の後の.(ドット)は『現在いるディレクトリ―』を示しています。

今いるディレクトリー内で、イメージをbuild しますよという意味です。

my_first_image (1).png

なのでDockerfileからDocker Imageをbuild する時には、ちゃんとDockerfileが存在するディレクトリーにいるようにしましょう。

2021-05-31_9-09-04.png

docker build . を実行すると、Dockerfileの中身が実行されているのが分かると思います(青の文字の赤の下線が引かれているところ)

その後、どんなImagesができたのか『docker images』で調べると、ちゃんと作られているのが分かります。

2021-05-31_9-19-35.png

ただ、いま作ったImageにはImage名が作られていません。(REPOSITORYのところがnoneになっています)

もし、名前を付けたいときは

docker build -t <name> <directory>

としてください。

下のようになります

2021-05-31_9-25-01.png

#Docker Container を作る

では、Imageが作られたので、次はそのImageからContainerを作ってみます。

docker run <imageID>

2021-05-31_9-13-11.png

すると、Dockerfile を書いた時に

CMD ["コマンド"]

で書いたコマンドが実行されているのが分かります。

2021-05-31_10-00-52.png

#DockerfileのInstructionについて

では、今回エディターで作ったDockerfile のInstructionがそれぞれ何を意味するのかを書いていきますね。

今回の記事で紹介する他にもInstructionはありますが、今回の記事では

FROM

RUN

CMD

のみに的を絞って解説していきます

##FROM
全てのDockerfile は『FROM』から始まります

FROMの後には、ベースとなるイメージを指定します。

今回はubuntuというLinux系のOSを指定しました。

このFROMで引っ張ってきたベースイメージの上で、RUN以降のInstructionで実行されるLinuxのコマンドを実行する事になります

##RUN

RUNはベースイメージに対して、特定のコマンドを実行させます。

update されたパッケージを取ってきてインストールさせたり、Container内にファイルを作って、その中に何かテキスト情報を書いたりできます。(今回の場合、my_first_fileにhello と書き込みました)

今回作ったDockerfileのRUNの結果がどのように反映されているか確かめてみましょう

2021-05-31_11-08-27.png

##CMD
CMD はCommandの略です。

Containerを最初に作る時に実行されるコマンドを書きます

CMD ["コマンド"]

 
と、角括弧にクォーテーションマークで囲んだコマンドを入れます。

前述した、『Docker Containerを作る』という見出しのついたセクションに、実際どのようにコマンドが実行されたかの結果のスクショを貼っていますので、確認しておきたいかたは見てくださいね。

#まとめ

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

Dockerfileのざっくりした内容を書かせていただきました。

次回の記事ではもう少し踏み込んだ内容について書いていこうと思います!

3
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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?