PCECAKE BLOG

DockerとDocker ComposeをWSLのUbuntu22.04上で使う

DockerとDocker ComposeをWSLのUbuntu22.04上で使う

投稿日: 2023/5/6


Docker

Dockerはクジラのアイコンで有名なコンテナ基盤アプリケーションです。

https://www.docker.com/

コンテナは仮想化の一種で、VMwareのvSphereやMicrosoftのHyper-Vを用いてのOSを含む仮想マシンを作成する仮想マシンではなく、OSのリソースは共有してしまおうという考えの仮想化です。

需要があれば今度詳しく説明しますが、世の中には多くの解説サイトがあるので、そちらを読むのがいいかも。

ちなみに同じコンテナ仮想化ではRedHatのPodmanなどが有名です。

Docker Compose

今回はついでにDocker Composeも入れます。

Docker Composeは複数のコンテナを一度に管理できるツールのようなものです。
例えばWordpressをDockerで構築しようとした場合、「Wordpress本体」と「データベース(MySQLなど)」が必要になりますが、Docker Composeを使うと、1つのファイルを作るだけで、2つのコンテナを作成したり、起動したりすることができます。

ざっくりとした流れ

手順のざっくりとした流れです。

順序内容
0WSLの準備
1レポジトリの追加
2インストール
3確認

手順

WSLの準備

今回はWindows Subsystem for Linux(WSL)を利用してWindows環境で実行します。

ちなみにですが、小難しいことをしたくなければDocker for Windowsを入れるのがスマートです。

が、WSLになれること、作り直したくなったらWSL上で再作成してしまえばいいという、どうでもいい理由で試します。

まずはWSL上にRHELを用意する必要があります。

Windows環境(WSL)でRedHatを使う

レポジトリの追加

「dnf install docker」などと入力すれば入るような甘いものではありませんので、Docker用のレポジトリを追加。
ちなみに、インストールするDockerは「docker-ce」です。

  1. アップデートと必要パッケージをインストールします

    $ sudo apt-get install ca-certificates curl gnupg lsb-release
  2. GPGキー(パッケージの配布元が正しいか確認するための鍵)を保存するディレクトリを作成します
    既に存在している場合もあります。

    $ sudo mkdir -p /etc/apt/keyrings
    $ ls -la /etc/apt/ | grep keyrings
    drwxr-xr-x  2 root root 4096 Apr  8  2022 keyrings
  3. docker公式のGPGキーを取得します

    $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
  4. レポジトリを追加します

    $ echo \
    "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
    $ sudo apt-get update
    
    ...
    Reading package lists... Done

インストール

Dockerをインストールします。
ここではあわせてDocker Composeもインストールしておきます。

$ sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
...
Do you want to continue? [Y/n]y
...

$ sudo apt update

確認

  1. サービス起動確認

    $ sudo systemctl status docker
    ● docker.service - Docker Application Container Engine
        Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
        Active: active (running) since Wed YYYY-MM-DD hh:mm:ss JST; xxx ago
    TriggeredBy: ● docker.socket
        Docs: https://docs.docker.com
  2. Dockerコマンドの確認
    コンテナの一覧を表示するコマンドを実行してみます。

    $ sudo docker ps -a
    CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

    項目だけが表示されればOKです。