概略
なぜDockerを使うのか
皆さんは開発環境はWindows・検証/本番環境がLinuxのため、単体テスト自動化を行った場合開発環境ではうまくいったのに検証環境では動かないという経験はないでしょうか?環境差異があることによる開発の難しさです。
それらの諸問題解消するためには現時点ではDockerを使用するのが一番手っ取り早いでしょう
DockerをWindows開発環境で利用し、ほぼ本番環境と同じ環境を構築することにより、環境差異をなくし、テストを容易にします。
Dockerとは
アプリケーションサービスを1つの仮想環境として実行するアプリケーションです。基本的には1環境1サービスとして「Dockerイメージ」を作成します。そして、下図のようにイメージをサービスとして1つ、または、複数起動します。起動したサービスを「Dockerコンテナ」といいます。
細かい技術については説明を省きますがLinuxの仮想環境として同じ技術を使用した「LXD」(LXCの後継アプリケーション)がありますが、こちらはサービスを実行するOSを仮想環境として起動します。
Dockerの利点として下記の点が挙げられます。
- Docker仮想環境はコンテナ型と呼ばれるもので、Linuxカーネルに直接アクセスするためオーバーヘッドが少ない。
- 各アプリケーションの公式がDockerHubと呼ばれるリポジトリサイトにDockerイメージを提供しているためサービスを利用しやすい。
- 環境のバージョンや詳細な設定はDockerfileやdocker-compose.yml等のファイルに記載している(環境のコード化:Infrastructure as Code)ためバージョンアップやサービス環境のリリース・配布が容易。
- Dockerイメージさえ作成できていればDockerコンテナを起動するのは数秒もかからない。必要なサービスを必要な時に起動できるためメモリやCPUの消費が少ない。
docker-composeとは
Dockerは1つのサービス仮想環境を実行するためのアプリケーションでDockerfileは1つのDockerイメージをビルドするための設定ファイルですが、通常Webアプリケーション等は複数のDockerfileで定義されたDockerイメージを同時に起動してシステムを構築する必要があります。
そういった場合、docker-composeで複数のDockerコンテナの起動をサポートします。
上図にあるようなシステムを構築する場合、RDB、AP、Webコンテナの順に起動したり、各コンテナの永続化データ(コンテナが停止してもコンテナ内のデータを残す)の設定を行います。
インフラの構築と言えばプログラミングとは全く別の世界を想像するかもしれませんが、Dockerはプログラミングができる人ならばマスターするのも容易かと思います。失敗しても環境の作り直しが可能ですのでとにかく使ってみましょう。
Docker関連アプリケーションのインストールと設定
1.Docker (Community Edition) インストール
下記のコマンドをWSL端末で実行します。
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
$ sudo apt update && sudo apt upgrade -y && sudo apt install -y docker-ce
2.Dockerコマンドの権限設定
デフォルトユーザ(develop)でdocker daemonを操作可能にします。
下記のコマンドをWSL端末で実行します。
$ sudo groupadd docker
$ sudo usermod -aG docker $USER
3.docker-composeインストール
-
docker-composeの最新リリースのバージョンをリンク先のサイトで確認します。
-
下記のコマンドをWSL端末で実行します。
$ sudo curl -L "https://github.com/docker/compose/releases/download/<「1.」で調べたバージョン番号>/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
4.docker-composeコマンドの権限設定
下記のコマンドをWSL端末で実行します。
$ sudo chmod +x /usr/local/bin/docker-compose
5.インストールバージョンの確認
下記のコマンドをWSL端末で実行します。
$ docker --version
例) Docker version 20.10.8, build 3967b7d
$ docker-compose --version
例) docker-compose version 1.29.2, build 5becea4c
3.Docker in WSL環境構築 < 前 **3.1.Docker / docker-compose インストール・初期設定** 次 > 3.2.Docker環境構成検討