Docker fileに関して~備忘録~

・Docker fileとは

Docker fileはdocker imageの設計図に当たるようなもの。Docker fileはテキストファイル。

基本的にDocker fileは履歴みたいなのが残るのでdocker fileをつかうようにしていくとよい。

・docker fileの作成

$ mkdir docker
$ cd docker 
$ vim Dockerfile  #何かしらテキストファイルに書く

DockerfileからDocker imageを作成するにはbuildを使用する

#<注意!>
#buildするときは必ずDockerfileがある場所でbuildを行う
$ docker build <directory> #これはimageに名前がない
$ docker build . #今のリポジトリにDockerfileがあるならこれを打てばよい

#imageに名前を付けてbuildするとき
$ docker build -t <name> <directory>


・なぜbuildをするときにDockerfileがあるフォルダで行うのか?

docker daemonにフォルダごと渡すから。その際のフォルダのことをbuild contextという。なぜそうするのかというと、そうすることによりbuildしたときにbuild context(フォルダ)内の他のファイルもしようすることができるため。


<インストラクションに関して>

・FROM(ほとんどOSを指定するときに使う)

DockerfileはFROMから書き始める。ベースとなるイメージを決定している。


・RUN(linuxのコマンドを実行)

RUNごとにレイヤーが作られる。それ以外にもCOPY,ADDもレイヤーを作る。これはべてroot直下で動作をしているので注意が必要になってくる。

・WORKDIR

これを使用することで実行ディレクトリを変更することができる。


・CMD(コンテナのデフォルトのコマンドを指定する)

ubuntuだとbin/bashとかのコンテナに入るときに指定するやつ。最後に記述する。一つのDockerfileに一回しか記述しない。レイヤーは作成しない

CMD["executable" , "param1" , "param2"]

"executable" 実行可能なコマンドls , pwd , bashなど

param1などは実行可能なコマンドの引数を指定する。

・ENTRYPOINT

runの時に上書きすることが出来ない。もしENTRYPOINTを使用した場合はCMDではENTRYPOINTで指定したコマンドの引数のみ指定する!


・COPY(単純にフォルダをコピーするだけなら!)

COPY <docker context内にあるファイルを指定> <コンテナの中の置く先を指定>

・ADD

コンテナにファイルを持ってくるときに使用する。COPYと違うのはtarなどのファイルを自動で解凍してくれる!


・ENV(環境変数を設定する!)

ENV <key> <value>の書き方で行う



この記事が気に入ったらサポートをしてみませんか?