ubuntu desktopにDocker及びDocker Composeをインストール

スポンサーリンク

公式の説明を参考にして、DockerとDocker Composeをインストールします。インストールするOSはUbuntu 22.04 Desktopです。

Install Docker Engine on Ubuntu
Jumpstart your client-side server applications with Docker Engine on Ubuntu. This guide details prerequisites and multip...

前提条件のセットアップ

以下のパッケージをインストールします:

  • ca-certificates: これは一般的なルート証明書を含むパッケージで、HTTPS通信の際にサーバーの証明書を検証するために必要です。Dockerの公式リポジトリからのダウンロード時に、証明書の検証を行うためにこのパッケージが必要です。
  • curl: コマンドラインツールで、URLからデータを転送するのに使用されます。このガイドでは、Dockerの公式GPGキーをダウンロードするために使用しています。
  • gnupg: GnuPGは、データの暗号化やデジタル署名を行うためのツールセットです。このガイドでは、Dockerの公式GPGキーを取り扱うために使用しています。(不要になった)
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
公式サイトで確認すると、以下のコマンドに変更になりました
sudo apt-get update
sudo apt-get install ca-certificates curl

Dockerの公式GPGキーを追加します

Dockerのソフトウェアは公式から提供されていますが、不正なソースからのソフトウェアをインストールしないように、公式のGPGキーを使用してその真正性を検証します。以下のコマンドは、そのための設定を行うものです。

  1. キーリングのディレクトリを作成:
sudo install -m 0755 -d /etc/apt/keyrings

このコマンドは、GPGキーを保存するためのディレクトリ(キーリング)を作成します。

  1. Dockerの公式GPGキーをダウンロード&キーリングに保存:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
以下のコマンドに変更になったので記事更新
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

curlでDockerの公式サイトからGPGキーをダウンロードし、gpgコマンドでそのキーをキーリングに追加します。

  1. キーリングの権限を変更:
sudo chmod a+r /etc/apt/keyrings/docker.gpg
以下のコマンドに変更になったので記事更新
sudo chmod a+r /etc/apt/keyrings/docker.asc

キーリングに保存したGPGキーを、システムが読み取れるようにするための権限変更を行います。

Dockerの公式リポジトリの追加

リポジトリとは、ソフトウェアのパッケージやアップデート情報を格納しているオンラインのデータベースのようなものです。UbuntuなどのLinuxディストリビューションは、特定のソフトウェアをインストールする際、これらのリポジトリからパッケージをダウンロードしてきます。公式のリポジトリ以外にも、サードパーティのソフトウェア提供者(この場合はDocker)が独自のリポジトリを提供することがあります。

Dockerの公式リポジトリをシステムに追加することで、Docker関連のソフトウェアやアップデートを公式のソースから直接インストールすることができます。

以下のコマンドは、Dockerの公式リポジトリをUbuntuのソースリストに追加するものです。

echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
こちらもコマンドが変更になりました
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

このコマンドは、自分のシステムのアーキテクチャとUbuntuのバージョンに合わせて、Dockerの公式リポジトリのURLを作成し、それを/etc/apt/sources.list.d/ディレクトリに保存します。

パッケージリストの更新

コンピュータのソフトウェアは、オンラインの「ショップ」のようなもの(リポジトリと呼ばれます)からインストールされます。この「ショップ」の商品リストを最新の状態に更新することで、最新版のソフトウェアをダウンロード・インストールすることができます。

以下のコマンドで、商品リストを最新に更新します。

sudo apt-get update

DockerとDocker Composeのインストール

Dockerは、コンテナという技術を使って、アプリケーションを軽量で移植性の高い「パッケージ」のようなものとして実行するためのツールです。このステップでは、Docker関連の必要なソフトウェアをインストールします。

以下のコマンドで、Dockerと関連ツールをインストールします。

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

ここまででインストールは完了しました。簡単なコマンドを入力して動作確認します。

動作確認

Dockerをインストールした後、実際に動作しているか確認するための一般的なコマンドはdocker psです。このコマンドは現在動作しているコンテナの一覧を表示します。

docker ps

しかし、時折このコマンドを実行すると、次のようなエラーが表示されることがあります。

permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get “http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json”: dial unix /var/run/docker.sock: connect: permission denied

エラーの理由

このエラーは、Dockerのデーモン(バックグラウンドで動作しているプロセス)との通信時に権限が足りないために発生します。

エラーの対処方法

  1. 一時的な解決策: sudoを使用してコマンドを実行することで、管理者権限を与えてコマンドを実行できます。
sudo docker ps

恒久的な解決策: いちいちsudoを使用せずにdockerコマンドを実行するには、以下の手順を実行します。

  • 現在のユーザーをDockerグループに追加:Dockerは特定の「グループ」に属するユーザーのみが権限なしでアクセスできるようになっています。現在のユーザーをそのグループに追加します。
sudo gpasswd -a mamushi docker

Dockerのソケットファイルの所有権を変更:

Dockerとの通信には特定の「ソケットファイル」が使用されますが、このファイルの所有権を変更して現在のユーザーでもアクセスできるようにします。

sudo chown mamushi:mamushi /var/run/docker.sock

これで、sudoをつけずにdockerコマンドを実行できるようになります。ただし、ユーザーをDockerグループに追加すると、そのユーザーにはDockerを使ってシステムに対する広範な権限が与えられるので、セキュリティの観点から注意が必要です。

タイトルとURLをコピーしました