Dockerfileとdocker-compose.yamlファイルの役割の違い

eyecatching

更新日時:2022-06-12 18:01:25

Dockerを触ることから離れるとDockerfileとdocker-compose.yamlファイルの役割の違いがたまに分からなくなるので、備忘のために自分なりにまとめておこうと思います。

1. Dockerfileの役割
2. docker-compose.yamlの役割

1. Dockerfileの役割

Dockerfileの役割はDockerイメージを作成することです。

Dockerfileで元となるイメージを指定し、そこに自分で開発したアプリケーションを載せることで自身のイメージを作成することができます。

Dockerfileでbuileして作成されるのはあくまでもイメージとなるので、コンテナではありません。

コンテナを作成する場合は、Dockerfileで作成したイメージを元にdocker container runコマンドを実行する必要があります。

余談ですが、Dockerfileを作成せずとも、元となるDockerイメージをリポジトリからpullしコンテナとして立ち上げた後、docker cpコマンドでアプリケーションファイルをコンテナへコピーすることでアプリケーションを動かすこともできます。

2. docker-compose.yamlの役割

対してdocker-compose.yamlの役割は1つ以上のDockerコンテナを容易に作成できるようにすることです。

docker-compose.yamlではイメージのビルドとコンテナの作成をコマンド1つで実行できます。

ちなみに、docker-compose.yamlではコンテナのイメージを指定することも、Dockerfileを指定しイメージからbuildすることも可能です。

また、ホストマシンとコンテナ、コンテナとコンテナのポートフォワーディングやボリューム指定などが可能なため、DockerfileのみでDockerを使い倒すより多くの設定をIaCとして管理することが可能です。

そのため、お試しでコンテナを立ち上げる程度なら問題ありませんが、少しでも実践的にDockerを使用する場合はdocker-compose.yamlを作成することをお勧めします。