読まなくていいやつ
インフラエンジニアへの道3日目です。今日はDockerを使ってみます。
本日の参考図書です。
https://amzn.asia/d/fqzjTWy
前半がDockerについての説明で、後半がハンズオンになっています。
WindowsとMacそれぞれDocker Desktopのインストール手順が書かれていて丁寧です。
「Dockerとはなんぞや」というところは本に記載されているので、この記事では実際に手を動かしてみた記録としてやっていきます。
Dockerでコンテナを作成するには
Dockerの操作は基本的にdockerコマンドで行います。チートシートを見つけました。
Docker Desktopでもコンテナの起動や停止はできますが、細かい操作やオプションの指定まではできないため、ほとんどコマンド操作になります。
Dockerコマンド
docker 対象 操作
例えば、コンテナを作成・実行するコマンドは
docker container run
で、対象が「container」で操作「run」です。操作以降にはパラメータやオプションを指定します。
dockerコマンドでApacheのコンテナを作成する
使用するイメージ
イメージ名:httpd
Docker hubのURL:https://hub.docker.com/_/httpd
docker container run --name apache01 -p 8080:80 -d httpd
コンテナが作成されたか確認するためにhttp://localhost:8080 にアクセスします。
Docker Desktopでも「apache01」が実行中になっていることが確認できました。
コンテナ停止する
コンテナを作ってみたいだけだったので停止します。
docker container stop apache01
先程のURL (http://localhost:8080) を再度確認するとアクセスできなくなっています。
コンテナを削除する
コンテナを作ってみたかっただけなので、削除します。
docker container rm apache01
Docker Desktopから削除されたことが確認できました。
Docker Compose
大きな声で叫んだら必殺技になりそうなIT用語(?)として憧れの「ドッカーコンポーズ」です。
Docker Composeは、一度に複数のコンテナを作成、実行できます。
Docker Composeでは、どういうコンテナを作成するかを設定するファイルとしてYAMLファイルが必要です。Docker ComposeにおけるYAMLファイルのデフォルトの名称はcompose.yaml
です。
ドッカーコンポーズの手順
- 作成したいコンテナの情報を整理する
作成したいコンテナに必要なソフトウェアを整理します。どのソフトウェアがインストールされている環境がほしいのか、どのバージョンを使うのかという点を整理しておきます。 - Docker Composeファイルの作成
整理した情報を元にDocker Composeファイルを作成する。 - コマンドを使ってコンテナを作成・実行する
作ったファイルをフォルダに配置したら、docker compose up -dコマンドを実行すると、ファイルに記載された情報に基づいてコンテナが作成される。
Docker Composeでコンテナを作ってみる
1.Apacheコンテナの情報を整理する
コンテナ作成に必要な項目 | 設定値 |
---|---|
使用するイメージ | httpd.バージョン2.4 |
ポート番号 | 8080:80 |
2.Docker Composeファイルの作成
compose.yaml
ファイルを作成します。デフォルトで、カレントフォルダにあるcompose.yamlファイルが読み込まれます。また、デフォルトでフォルダ名がDocker Composeのプロジェクト名に使われます。プロジェクト名によって個々の環境が分離されるので、何のためのコンテナ・環境であるのかわかりやすい名前をつけておきます。今回は、docker-tutorial
にしておきました。
services:
web:
image: httpd:2.4
ports:
- "8080:80"
yaml形式は、半角スペースの過不足があるだけでエラーになるので気をつけて入力します。タブではなく、あくまで半角スペースを使用して、ファイル全体でインデントには半角スペースを2つ使うというルールで統一する必要があります。
また、キーのあとのコロンに続けて値を記述する場合は、コロン(:)のあとに半角スペースが1つ以上必要です。ただし、値を次の行に書く場合は半角スペースがなくても大丈夫です。
3. コマンドを使ってコンテナを作成・実行する
compose.yml
を配置している階層で以下のコマンドを実行します。
docker compose up -d
docker compose up
コマンドは、ローカルに対象のイメージがない場合にイメージをプルしてからコンテナを作成・実行するコマンドです。
-d
はコンテナをバックグラウンドで実行させるオプションです。これを使わないと、コンテナのログが画面上に出力され、続けてコマンドが打てなくなります。
4.コンテナが作成されたか確認する
実行中のコンテナを確認するコマンドを実行します。
docker container ls
5.コンテナを起動・停止する
docker compose stop
docker compose start
コンテナが再起動しました。
※このコマンドはすでにあるコンテナを起動するもので、コンテナを作成しているわけではないです。
6.コンテナの後始末
使い終わったコンテナを削除します。
docker compose down
downコマンドの場合、コンテナが実行中であっても使用可能で、コンテナに紐づくネットワークも自動で削除します。
イメージも削除してみます。
docker compose down --rmi all
まとめ
Dockerを使って、実際にコンテナの作成・停止・削除を体験しました。
Docker Composeを使うことで、複数のコンテナを簡単に管理できることが実感できました。
基本的な操作を試しただけでも、Dockerの便利さがよくわかりました。
本の内容に沿って手を動かすだけでDockerの概要がわかりやすく、良書だと思いました。
学んだこと
-
docker container run
コマンドで、指定したイメージからコンテナを作成・起動できる。 -
docker compose
を使うと、複数のコンテナを一度に管理できることが便利。 - YAMLファイルにおけるインデントや書き方に注意が必要。スペースやコロンの使い方は特に重要。
- コンテナの状態確認や管理はコマンドラインで行い、Docker Desktopで可視化できる点も安心。
次にやりたいこと
たまにはデータエンジニアっぽいことを併せてみたいので、Dockerを使ってdbt環境を構築してみます。