Docker Engine を Ubuntu 22.04 (LTS)へインストール

概要

Ubuntu 22.04 (LTS) へ Docker Engine をインストールした時のメモ。
Ubuntu標準のリポジトリでは古い物がインストールされるため、最新のものを入れるようにする。
エンジンのみでコンテナについては記載していない。
基本、本家(https://docs.docker.com/engine/install/ubuntu/)の内容をそのまに個人的な補足説明を追記したものなので、英語が読めるまたは詳細な情報が欲しい場合は本家を参照すること。

インストール手順

  • 準備作業

    • 作業に必要なパッケージのインストール

    • GPGキーの設定

    • 公式リポジトリの設定

  • 本体インストール

    • Docker Engine をインストール

    • 動作確認

作業に必要なパッケージのインストール

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release
  • ca-certificates
    CA (認証局:CERTIFICATE AUTHORITIES)

  • curl
    各種プロトコルでファイルの送受信

  • gnupg
    OpenPGPのGNU版

  • lsb-release
    Linux系OSの内部構造の標準化

補足:curl 以外は最新版がインストール済みの可能性あり。

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

dockerリポジトリ用の公開鍵を取得して/etc/apt/keyrings/docker.gpgへ設置する。
補足:/etc/apt/keyrings は作成済みの可能性あり。
補足:過去の資料ではapt-keyを使用していたが、apt-keyが非推奨になったのでこのように直接公開キーを設置する方法になったらしい。

リポジトリの設定

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

docker用のリポジトリを追加する。
 リポジトリURLはhttps://download.docker.com/linux/ubuntu
 使用する公開鍵は前記で設置した/etc/apt/keyrings/docker.gpg
 作成されるリポジトリ設定ファイルは/etc/apt/sources.list.d/docker.list
これでaptコマンドでdocker関連のパッケージ管理ができるようになる。

リポジトリの設定を行ったら最初のステップとして、パッケージインデックスファイルの再同期を行う。

補足:$(lsb_release -cs) とはディストリビューションの情報情報取得用で、
今回はUbuntu 22.04なのでjammyという文字列に置き換わる。
補足:stable とは安定版使用を示す

Docker Engine をインストール

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
  • docker-ce
    dockerのコミュニティエディション

  • docker-ce-cli
    dockerのコマンドラインツール

  • containerd.io
    コンテナランタイム(要確認)

  • docker-compose-plugin
    複数のDockerコンテナを定義・実行するツール(要確認)

動作確認

sudo docker version
sudo docker run hello-world

バージョン情報は当資料作成時点で 20.10.21 でした。
docker の run オプションで ”hello-world”というコンテナを取得から実行までの動作確認を行う。
結果として”Hello from Docker!”とそのあとにメッセージを表示します。
日本語訳は下記

Dockerからこんにちは!
このメッセージは、あなたのインストールが正しく動作していることを示しています。

このメッセージを生成するために、Dockerは以下のステップを踏んでいます。
1. DockerクライアントがDockerデーモンにコンタクトした。
2.Docker デーモンが Docker Hub から "hello-world" イメージを取り出した。
(amd64)
3.Dockerデーモンはそのイメージから新しいコンテナを作成し、現在読んでいる出力を生成する実行ファイルを実行します。
4.Docker デーモンはその出力を Docker クライアントにストリーミングし、クライアントはそれをあなたの端末に送信します。

もっと野心的なことを試すには、Ubuntuのコンテナを次のように実行します。
$ docker run -it ubuntu bash で実行できます。

無料のDocker IDでイメージの共有、ワークフローの自動化など。
https://hub.docker.com/

より多くの例とアイデアについては、以下をご覧ください。
https://docs.docker.com/get-started/

run hello-worldの結果をDeepLで翻訳

追記:一般ユーザーでDockerを起動する設定

sudo usermod -aG docker $USER

/etc/group 内に docker というものが登録されているので、実行を許可したいユーザーをそこへ追加する。
注意:設定の反映にはグループ追加後に再ログインが必要です。

補足:$USER は現ログイン中のユーザー。他ユーザーを設定する場合は直接ユーザー名を追加する。

追記:containerdのconfigのバージョン変更

version=1が非推奨になっているのでversion=2に変更する。
手順:
/etc/containerd/config.toml へ下記の変更を加える。
「version = 2」 を追加する。
「disabled_plugins = ["io.containerd.grpc.v1.cri"] 」を追加し、元あった 「disabled_plugins = ["cri"]」をコメントアウト("#"追加)する。
具体例は下記

…前半省略…
version = 2
disabled_plugins = ["io.containerd.grpc.v1.cri"]
#disabled_plugins = ["cri"]
…後半省略…

いいなと思ったら応援しよう!