Ubuntu22.04にdockerをインストールする方法

こんにちは。webチームの黒岩です。
今回はUbuntuで比較的新しいバージョンの22.04の中にdockerをインストールする方法をメモしておきます。
dockerのインストール方法は公式サイトのドキュメントでは三つあります。

1. Dockerのリポジトリを登録してそこからインストールする方法
2. DEBパッケージをダウンロードして手動でインストールする方法
3. コンビエンススクリプトを使用して自動でインストールする方法

ここでは、Linuxでは最もポピュラーであろう手法、
1のDockerのリポジトリを登録してそこからインストールする方法について紹介していきます。

環境

Ubuntu: 22.04
Docker: 20.10.17

それでは行きましょう。

1. 古いバージョンを削除

先ずは既にインストールされているけど、バージョンを新しくしたいという人のためにその削除方法をお伝えしておきます。このコマンド一つでできます。

$ sudo apt-get remove docker docker-engine docker.io containerd runc

2. Dockerリポジトリの設定

そもそもリポジトリとは?

ubuntuにおけるリポジトリというのは、
「OSのインストールプログラムを提供し、更にインストール後のアップデートやインストールの規則や手順を定めた仕組みによって、パソコンからスムーズかつ途切れなく利用できるように工夫されたプログラムサーバー。」

要は、対象アプリのためのリポジトリを作成すると、インストールだけでなくアップデートも簡単にできるようになる仕組みということですね。

sudo apt updateのみで対象アプリがアップデートされるのは、これのおかげなのです。

準備

必要なパッケージをインストールします。

$ sudo apt-get update
$ sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

次に、Dockerの公式GPGキーを取得します。
GPGキーとは、オープンソースのツールの公開鍵の一つです。

$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

リポジトリの登録

いよいよリポジトリの作成です。
下のコマンドでは、リポジトリを登録した後、リポジトリの設定ファイルが作成されたことを確認しています。

$  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

3. Dockerのインストール

二種類説明します。

最新バージョンでインストール

$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

バージョンを指定してインストール

まずは、以下のapt-cache madisonコマンドでインストール出来るバージョンを調べてからインストールします。

$ sudo apt update
$ apt-cache madison docker-ce
 docker-ce | 5:20.10.17~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
 docker-ce | 5:20.10.16~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
 docker-ce | 5:20.10.15~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
 docker-ce | 5:20.10.14~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
 docker-ce | 5:20.10.13~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
$ sudo apt-get install docker-ce=5:20.10.13~3-0~ubuntu-jammy docker-ce-cli=5:20.10.13~3-0~ubuntu-jammy containerd.io docker-compose-plugin

最後にバージョンの確認

$ docker -v
Docker version 20.10.13, build a224086

4. 動作確認

$ sudo docker run hello-world

# 成功すると以下の文言が表示されます↓
Hello from Docker!
This message shows that your installation appears to be working correctly.

5. 一般ユーザでDockerを実行できるようにする

Dockerのインストール自体はこれで完了しました。しかし上のように、このままだと管理者権限(sudo)でしか実行することができません。
sudoコマンドをいちいち打たずにすませるには、一般ユーザをdockerグループに所属させる必要があります。
最初dockerグループには誰も所属していなかったのがusermodコマンドでユーザをdockerグループに追加しています。

$ getent group | grep docker
docker:x:999:
$ sudo usermod -aG docker $USER
$ getent group | grep docker
docker:x:999:yoshi

一旦ログインし直してidコマンドでdockerグループに所属していることを確認しています。

$ id
uid=1001(yoshi) gid=1001(yoshi) groups=1001(yoshi),27(sudo),999(docker)

これでsudoコマンド無しでdockerを起動できるようになりました!

$ docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.