環境構築のコード化(Infrastructure as a code) とは
環境構築は前述したようにターミナルを通じて各種設定を行うとブラックボックス化しやすく、またマニュアル化していたとしても手順のミスなどを通じて問題化しやすいものです。
そのため、現在では環境構築のコード化、すなわちコードを利用して環境構築を行うことで
- 環境構築を自動化できる
- 環境構築コードそのものがドキュメントになる
- 同じ環境を複数作成する際にスケール可能になる
といったメリットを享受するのが一般的になってきています。
Dockerfileの例
例えば、前章で扱った「vimインストール済みのubuntuイメージ」の構築についてDockerfileを利用してコード化してみましょう。
練習用ディレクトリの作成と移動
mkdir -p ~/MyDocker/dockerfile_sample
cd ~/MyDocker/dockerfile_sample
上記のコマンドで、今回のDockerfile練習用のディレクトリを作成し、移動しておきましょう。
Dockerfileの作成
「Dockerfile」というファイル名でファイルを作成し(拡張子は不要です)、中身を以下のように編集して保存してください。
Dockerfile
# ubuntuイメージをpull
FROM ubuntu:18.04
# インストール用のスクリプトをexec
RUN apt-get update && apt-get install -y vim
Dockerfileを利用したイメージ作成
Dockerfileを利用したイメージの作成は image build コマンドで行います。現在 Dockerfile があるディレクトリにいることをlsコマンドで確認してから、
docker image build -t [ユーザー名]/ubuntu_vim:1.1 .
上記のコマンドで、Dockerfileを利用してイメージの作成を行いましょう。(現在のディレクトリを表している、末尾のドットに注意しましょう。)
自動的にDockerfileが読み込まれ、イメージの構築が行われます。
docker image ls
上記のコマンドで、イメージが追加されたことを確認しておきましょう。
実際に、Dockerfileからbuildされたイメージを利用してみましょう。
docker container run -it --rm --name ubuntu_vim_sample [ユーザ名]/ubuntu_vim:1.1
自動的にログインされますので、vimコマンドを実行すると、正しくインストールされていることがわかります。
まとめ
上記のように、Dockerfileを利用して環境構築を行うことで、イメージがどのような構成になっているかを Dockerfile を読むだけで確認できるようになり、さらにスケーリングやカスタマイズも容易になるなど様々なメリットがあります。