【Docker】Docker ~ 基本編 / docker-compose ~

■ はじめに

https://dk521123.hatenablog.com/entry/2020/04/24/160044
https://dk521123.hatenablog.com/entry/2018/04/10/234030

の続き。

今回は、docker-compose に関して、ハンズオンを通して
もう少し深堀りする。

目次

【1】docker-compose とは?
【2】サンプル - ハンズオン
 1)docker-compose.yml を作成する
 2)docker-compose upコマンドで、コンテナ作成および起動
 3)ブラウザで設定したNginxにアクセス
 4)docker-compose downコマンドで、停止
【3】主なコマンド
 1)docker-compose up -d
 2)docker-compose ps
 3)docker-compose down
【4】その他あれこれ
 1)docker-compose の更新

【1】docker-compose とは?

* 複数のコンテナ(例えば、Webサーバ/DB など)を組み合わせて
 1つのアプリケーションとして定義するYAMLファイル

【2】サンプル - ハンズオン

お題

nginxサーバを構築する

参考動画

 ハンズオンについては、
以下の動画(44:20辺りから)を参考にさせてもらった。

https://www.youtube.com/watch?v=5d8O7jm7Q5c&t=586s

手順

1)docker-compose.yml を作成する
2)docker-compose upコマンドで、コンテナ作成および起動
3)ブラウザで設定したNginxにアクセス
4)docker-compose downコマンドで、停止

1)docker-compose.yml を作成する

* docker-compose.yml ファイルの書き方の詳細は、以下の関連記事を参照のこと。

https://dk521123.hatenablog.com/entry/2020/12/18/152949

docker-compose.yml

version: "3"
services:
    web-server:
        image: nginx:alpine
        ports:
            - "80:80"

2)docker-compose upコマンドで、コンテナ作成および起動

docker-compose.ymlに記載されている定義をもとに
コンテナ作成および起動を行う

コマンド例

# -d は、バックグラウンド起動
docker-compose up -d

# [オプション] ログをtail的に監視し、表示
docker logs user_web-server_1 -f

3)ブラウザで設定したNginxにアクセス

ブラウザで、設定したNginxに対して
http://[IPアドレス or hostname] でアクセスする
 => 「Welcome to nginx!」が表示されたらOK!
 => 「docker logs user_web-server_1 -f」してたら、ログが表示されるはず

4)docker-compose downコマンドで、停止

docker-compose down

【3】主なコマンド

1)docker-compose up -d
2)docker-compose ps
3)docker-compose down

※ それ以外は、以下のサイトを参照のこと。

https://qiita.com/ryuichi1208/items/8b5adc88a93319cb76a2

1)docker-compose up -d

* docker-compose up は、サービス起動
* -d は、バックグラウンド起動

2)docker-compose ps

* コンテナ一覧表示

3)docker-compose down

* コンテナ・ネットワーク・イメージ・ボリュームの停止と削除
 => stop は、サービスの停止

* 全て(※1)を一括消去するコマンド
~~~~~~~~~~
docker-compose down --rmi all --volumes --remove-orphans
~~~~~~~~~~

※1
コンテナ、イメージ、ボリューム、ネットワーク、未定義コンテナ

https://qiita.com/suin/items/19d65e191b96a0079417

【4】その他あれこれ

1)docker-compose の更新

* v2系は、v1系とは異なるので注意

https://github.com/docker/compose/releases

より抜粋
~~~~
 Compose v2 architecture and installation instructions differ from v1
~~~~

* 以下のサイトを参照した。

https://www.rockyourcode.com/how-to-install-docker-compose-v2-on-linux-2021/
[1] 古いバージョンを削除する

sudo rm -rf docker-compose

[2] 古いバージョンを削除する

# v2.0.1 をインストール

# create the docker plugins directory if it doesn't exist yet
mkdir -p ~/.docker/cli-plugins

# download the CLI into the plugins directory
curl -sSL https://github.com/docker/compose/releases/download/v2.0.1/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose

[3] 実行可能権限をバイナリに適用する

# sudoなし
chmod +x ~/.docker/cli-plugins/docker-compose

[4] バージョンを確認する

docker compose version
# 「Docker Compose version v2.0.1」が表示されたらOK

関連記事

Docker ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2020/04/24/160044
Docker ~ Windows / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2017/09/23/235818
Docker ~ Linux / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2018/04/10/234030
Docker ~ 基本編 / Dockerfile ~
https://dk521123.hatenablog.com/entry/2020/04/14/000000
Docker ~ 基本編 / dockerコマンド ~
https://dk521123.hatenablog.com/entry/2020/04/13/000000
Docker ~ 基本編 / docker-compose.yml ~
https://dk521123.hatenablog.com/entry/2020/12/18/152949
Docker ~ Data Volume について ~
https://dk521123.hatenablog.com/entry/2018/09/08/222100
Docker によるトラブルシューティング
https://dk521123.hatenablog.com/entry/2017/09/24/162257