UbuntuにDockerをインストール
UbuntuへのDockerインストール方法について、Docker公式手順に従って解説しています。コマンドやオプションの意味も丁寧に説明しているため、「なぜこの操作が必要なのか」がしっかり理解できます。
- 既存のDocker関連パッケージを削除
- Dockerの公式リポジトリをソースリストに追加
- Dockerのインストール
- Docker Engineの動作確認
- 一般ユーザーでDockerを操作できるようにする
本記事では、Ubuntu 24.04 LTSを使用しています。
既存のDocker関連パッケージを削除
過去にインストールした旧バージョンのDocker関連パッケージがシステムに残っていると、依存関係の競合やバージョンの不整合によって、インストールや動作に支障をきたす可能性があります。そのため、Dockerインストール前に、それらを削除してクリーンな状態にします。
- docker.io
- docker-doc
- docker-compose
- docker-compose-v2
- podman-docker
- containerd
- runc
既存のDocker関連パッケージを削除する
$ for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; doneDockerの公式リポジトリをソースリストに追加
- 既存のDocker関連パッケージを削除していること。(前述の作業)
パッケージ情報の更新
$ sudo apt-get updateパッケージ情報を最新の状態に更新します。これにより、パッケージインストールでの依存関係の不整合を防ぐことができます。
リポジトリ追加に必要なパッケージをインストール
$ sudo apt-get install ca-certificates curlca-certificates:CA証明書curl:URLからファイルをダウンロードするコマンド
HTTPS経由でリポジトリを追加するために必要なパッケージをインストールします。
GPGキーを保存するディレクトリを作成
$ sudo install -m 0755 -d /etc/apt/keyrings-m 0755:パーミッション設定-d /etc/apt/keyrings:ディレクトリを作成
APTの仕様に則り、GPGキーを配置するディレクトリを作成します。
sources.listのマニュアル
$ man sources.list
〜 省略 〜
The recommended locations for keyrings are /usr/share/keyrings for keyrings managed by packages, and /etc/apt/keyrings for keyrings managed by the system operator.
〜 省略 〜- パッケージによって管理されるキーリングの場合:
/usr/share/keyrings - システム管理者によって管理されるキーリングの場合:
/etc/apt/keyrings
Docker公式のGPGキーをダウンロード
$ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc-f: サーバーが返すエラーページ(HTMLの内容)を表示しない。-s: サイレントモード ※進行状況やエラーメッセージを表示しない。-S: サイレントモードでもエラーメッセージを表示する。-L: リダイレクトを自動的に追跡して、新しいURLに再リクエストを送る。-o: ダウンロードしたDockerのGPGキーを指定したファイルに保存。
Dockerの公式サイトからGPGキーを取得し、先ほどのディレクトリに保存します。
GPGキーのパーミッション設定
$ sudo chmod a+r /etc/apt/keyrings/docker.asca+r: すべてのユーザーaに読み取り権限rを追加
APTがGPGキーを読み取れるように権限を付与します。
Dockerの公式リポジトリを追加
$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullUbuntuのバージョンに応じたDocker公式リポジトリをAPTソースリストに追加します。
この記事で使用した検証環境では、/etc/apt/sources.list.d/docker.listに次のような行が書き込まれました。
$ cat /etc/apt/sources.list.d/docker.list
deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu noble stable設定例
deb | バイナリパッケージを提供するAPTリポジトリ(ソースコードではなく実行可能形式) |
arch=amd64 | システムアーキテクチャ |
signed-by=/etc/apt/keyrings/docker.asc | GPGキーの場所 |
https://download.docker.com/linux/ubuntu | Docker公式のAPTリポジトリのURL |
noble | Ubuntuのリリース名(Ubuntu 24.04 LTS のコードネーム) |
stable | 安定版リポジトリ |
Dockerのインストール
- 既存のDocker関連パッケージを削除していること。(前述の作業)
- Dockerの公式リポジトリをソースリストに追加していること。(前述の作業)
パッケージ情報の更新
$ sudo apt-get updateパッケージ情報を最新の状態に更新します。これにより、先ほど追加したDockerの公式リポジトリを含む最新のパッケージ情報が反映されます。
Docker Engineをインストール
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugindocker-ce:Docker Engine(Community Edition)の本体docker-ce-cli:Dockerのコマンドラインインターフェースcontainerd.io:コンテナランタイム(コンテナの実行を管理する)docker-buildx-plugin:ビルド拡張機能docker-compose-plugin:Docker Composeプラグイン
Docker Engine、CLIツール、コンテナランタイムなど、主要コンポーネントをインストールします。
Docker Engineの動作確認
Docker Engineのインストールが完了したら、正しく稼働しているかを確認します。ここでは、サービスの稼働状況や動作確認のための具体的な手順を解説します。
Dockerサービスの稼働状況
$ systemctl status docker.service
$ systemctl status containerd.serviceDockerサービスが正常に起動しているかを確認します。ステータスがactive (running)であれば、正常に稼働しています。
サービス起動の設定方法について後述していますので、ご確認ください。
Docker、Docker Composeのバージョン情報
$ docker -v
$ docker compose versionインストールしたDocker、およびDocker Composeのバージョンを確認します。
ヘルプ表示は、--helpオプションを使用します。
$ docker --help
$ docker compose --helpテストコンテナを実行
最後に、Docker Engineが正常にコンテナを実行できるかをテストします。最も基本的な方法として、hello-worldというテスト用イメージを使用して、コンテナを起動します。
$ sudo docker run hello-world上記コマンドが正常に完了し、以下のメッセージが表示されれば動作確認は成功です。
Hello from Docker!
This message shows that your installation appears to be working correctly.
Docker運用環境の整備
一般ユーザーでDockerを操作できるようにする
通常、一般ユーザーがdockerコマンドを実行する場合、sudoを付与してroot権限で実行する必要があります。これは、Docker CLIがUnixソケットを介してDockerデーモンと通信しており、そのソケットの所有者がrootユーザーであるためです。
ただし、Unixソケットにはdockerグループにアクセス権が付与されているため、dockerグループに所属する一般ユーザーは、sudoを使用せずにDockerデーモンへコマンドを送信できます。
dockerグループを作成(既に存在する場合はスキップ)
一部のLinuxディストリビューションでは、パッケージマネージャーを使用してDocker Engineをインストールすると、dockerグループが自動的に作成されます。
# dockerグループが存在するか確認
$ getent group dockerdockerグループが存在しない場合、以下のコマンドで作成します。
$ sudo groupadd dockerユーザーをdockerグループに追加
$ sudo usermod -aG docker $USER-a:グループにユーザーを追加-G:ユーザーを追加するグループ名
グループ設定を反映
# グループ設定を反映
$ newgrp docker
# 反映されたかを確認
$ groups一般ユーザーでテストコンテナを実行
$ docker run hello-world以下のメッセージが表示されれば成功です。
Hello from Docker!
This message shows that your installation appears to be working correctly.
Dockerを自動起動する
Ubuntu環境では、Dockerインストール時の標準設定により、OS起動時にDockerサービスが自動起動します。
自動起動の設定確認
$ systemctl is-enabled docker.service
$ systemctl is-enabled containerd.service- 実行結果が
enabledの場合:自動起動する - 実行結果が
disabledの場合:自動起動しない
自動起動の有効化・無効化
# 自動起動の有効化
$ sudo systemctl enable docker.service
$ sudo systemctl enable containerd.service
# 自動起動の無効化
$ sudo systemctl disable docker.service
$ sudo systemctl disable containerd.serviceサービス起動・停止
# サービスの起動
$ sudo systemctl start docker.service
$ sudo systemctl start containerd.service
# サービスの停止
$ sudo systemctl stop docker.service
$ sudo systemctl stop containerd.service参考サイト
Docker公式ドキュメント:Install Docker Engine on Ubuntu
