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>の書き方で行う
この記事が気に入ったらサポートをしてみませんか?