DockerとDocker-composeでnginxのコンテナを作って、起動する

さわって学ぶクラウドインフラ docker基礎からのコンテナ構築」を読んでから、随分とDockerの理解が進んだと思う。

docker基礎からのコンテナ構築

これまでどこかのサイトにあるコマンドをコピペして使っていたり、ヤマカンでやっていたりしたことが、「そういうことだったのか」と思えるようになった。

いろいろとわかったことがある中で、DockerとDocker-composeの使い分けがちょっと見えてきたところがある。

まず、Dockerコマンドを使えば手軽にコンテナを作って、起動することができる。なにせ、DockerコマンドはDocker環境をインストールしたら使えるだのから。

Dockerの基本的動作を指示することができるコマンドなのだから、確実に押さえておいていいだろう。

一方、Docker-composeは別途インストールする必要がある。しかもPython環境も必要だ。

Dockerコマンドとはまた違う使い方になるから、使い方も別途覚えることになる。

ただ、その手間をかけてでも、設定をファイルに書き込んでおけることがいい。

Dockerコマンドでnginxのコンテナを作り、起動する

例えば、Dockerコマンドでnginxのコンテナを作って、起動するなら、

docker run --name nginx-sample -d -p 8080:80 -v ./html:/usr/share/nginx/html nginx

といったコマンドで起動することができる。

コマンド一発で、手軽にコンテナを作れる。

なお、ここで使っているイメージは、Docker Hubにあるnginx公式のものだ。

Docker-composeでnginxのコンテナを作り、起動する

これをDocker-composeで実行するとしたら、まずはこんな設定ファイルを作ることになる。

ファイル名は「docker-compose.yml」。

version: "3"

services:
        nginx:
                image: nginx
                volumes:
                        - ./html:/usr/share/nginx/html
                ports:
                        - 8080:80
                restart:
                        always

そして、「docker-compose.yml」を作ったフォルダに移動してから、次のコマンドを打つ。

docker-compose up -d

docker-composeのコマンドが簡単なのは、設定をファイルに書き込んでいるからだ。

おわりに

Dockerコマンドで手軽にコンテナを操作するのもいいし、Docker-composeを使い、設定ファイルを残しておくのもいい。

コマンドや引数などはそのうち忘れてしまうから、Docker-composeの「設定をファイルに残しておける」というのはちょっとした安心感がある。

また、複数のコンテナを組合せた環境を作るなら、すべて設定ファイルに書き込んでおけるDocker-composeの方が便利だろう。

大事なのは「こっちでこう書いたやつは、こっちではこう書くんだな」というのがわかっていることだと思う。いずれのコマンドも同じことが実現できるコマンドなのだから、どちらも書ければより理解が深まる。

「さわって学ぶクラウドインフラ docker基礎からのコンテナ構築」を読むことで、この2つのコマンドのことが比較して理解できるようになったのがよかった。

コンテナを作ったり組合せたり、壊したり直したりして、作りたい環境を作るというのも楽しいものだ。