公式の説明を参考にして、DockerとDocker Composeをインストールします。インストールするOSはUbuntu 22.04 Desktopです。
前提条件のセットアップ
以下のパッケージをインストールします:
- 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キーを使用してその真正性を検証します。以下のコマンドは、そのための設定を行うものです。
- キーリングのディレクトリを作成:
sudo install -m 0755 -d /etc/apt/keyrings
このコマンドは、GPGキーを保存するためのディレクトリ(キーリング)を作成します。
- 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
コマンドでそのキーをキーリングに追加します。
- キーリングの権限を変更:
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のデーモン(バックグラウンドで動作しているプロセス)との通信時に権限が足りないために発生します。
エラーの対処方法
- 一時的な解決策:
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を使ってシステムに対する広範な権限が与えられるので、セキュリティの観点から注意が必要です。