0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker fileについて

Last updated at Posted at 2025-10-05

Docker fileとは

Docker imageを作成するためのテキストファイル(Docker imageの設計書)です。
Docker fileという名前のテキストファイル(文字コードで定義される文字データのみを含むシンプルなファイル)で表記されます。

Docker fileコマンド集

Docker fileからDocker imageを作成するコマンド
$ docker build `<directory>` docker build .`(カレントディレクトリ`

カレントディレクトリ(現在いるディレクトリ)からDocker fileを探しDocker fileを元にDocker imageを作成する。

dangling image(宙ぶらりん)のimageに対して名前をつけるコマンド
$ docker build -t `<name>` `<directory>`

作成されたディレクトリは<none>表記になる。(dangling imageのこと)
そのため、名前をつけてあげる。

Docker fileのinsturuction(命令)について

Docker fileのinstructionとはわかりやすく説明すると
Docker fileを作る際の規則になります。

Dockerfile に記載する FROM [値]RUN [値]などのことです。
Dockerfile には以下のインストラクションがあります。

主要なinsturuction

主要なinstuructionについて整理していこうと思います。

  • FROM
  • RUN
  • CMD

こちらの3種類について説明していきます。

FROM

ベースとなるimageを決定し、Osを指定することが基本です。(Ubuntu、alpineなど)
Ubuntuの上にレイヤーを積み重ねいくイメージ 例:(touch test)
FROM は Dockerfile の先頭に記載します。

RUN

Linuxのコマンドを実行する際に使用します。
RUNを使用することで好きなようにやりたいことを実行させることができます。
ただし、RUN毎にLayerが作られるのでそちらに関しては注意が必要です。(Docker imageが大きくなってしまうため)

RUNコマンドを使用する時のポイント

  • RUNを1行にする:Docker fileとして見やすくなる。しかし、何度も同じものをinstallすることになるので手間がかかる。
  • RUNを複数行にする:cacheを利用するので手間(同じもののインストール)が省かれる。しかしRUNすることによりLayerが作成される。

結論:Docker fileをメンテナンス中は効率よく手間を省く。最後に一行にしてDocker fileとして見やすくすることが大事である。

CMD

CMD(コマンドの略)はコンテナのデフォルトのコマンドを指定します。
原則としてDocker fileの最後に記述します。

RUN vs CMD

RUNとCMDの違いについて

  • RUN:Layerを作る
  • CMD:作らない

シンプルに考えて見て、そのコマンドはLayerを作って手間を省くべきかを考える。

CMDコマンドを使用してupdateとinstallをしようとした場合のコード
CMD apt-get update && apt-get install -y \
curl\
nginx

これだと、Layerには保存されていないので、runされたタイミングで実行される。runするたびにupdateとinstallされたらたまったもんじゃないよね(笑)
なのでRUNすべきだ!今すぐ!

理解を深めたいと思ったコマンドについて

主要なinstuructionはアウトプットしましたが
これも必要だなと感じたものについても自分のためにアウトプットしていきます。

  • docker fileという名前のファイルがビルドコンテキストに入っていない場合
docker buildする際にdockerfilename名をつけるコマンド
docker build -f `<dockerfilename>` `<build context>`

理解するために必要なポイントを3点挙げます。

  • dockerfileは何を使っているのか
  • build contextはどこなのか
  • linuxコマンドの基礎知識(..:親ディレクトリ ./file:カレントディレクトリのfile mv: ファイルやディレクトリの移動、名前の変更等)

以上、凡事徹底すべきであり基礎を大事にしていこうと感じました。

感想

udemy等を視聴して気づいたのですがやはり人より理解することが苦手です。
そのため人の3倍はやらないといけないんだなと気づけました。
プログラミングに精進します。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?