Docker Engine インストール(Fedora 向け)

読む時間の目安: 4 分

Fedora 向けに Docker Engine を始めるには、前提条件を満たしているか を確認してから、インストール手順 に進んでください。

前提条件

OS 要件

Docker Engine をインストールするには、以下に示す Fedora の 64 ビットバージョンのいずれかが必要です。

  • Fedora 34
  • Fedora 35

古いバージョンのアンインストール

Docker のかつてのバージョンは、dockerあるいはdocker-engineと呼ばれていました。 これがインストールされている場合は、関連する依存パッケージも含めアンインストールしてください。

$ sudo dnf remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

dnfを実行したときに、上のパッケージがインストールされていないと表示されれば OK です。

/var/lib/docker/にはイメージ、コンテナー、ボリューム、ネットワークが含まれていて、それは保持されたまま残ります。 なお Docker Engine パッケージは、今はdocker-ceと呼ばれます。

インストール手順

Docker Engine のインストール方法はいくつかあります。 必要に応じて選んでください。

  • たいていのユーザーは Docker のリポジトリをセットアップして、そこからインストールしています。 インストールやアップグレードの作業が簡単だからです。 この方法をお勧めします。

  • ユーザーの中には RPM パッケージをダウンロードし、手動でインストールしている方もいます。 アップグレードも完全に手動となります。 この方法は、インターネットにアクセスできない環境で Docker をインストールするような場合には有用です。

  • テスト環境や開発環境向けに、自動化された便利なスクリプトを使って Docker のインストールを行うユーザーもいます。

リポジトリを利用したインストール

新しいホストマシンに Docker Engine を初めてインストールするときは、その前に Docker リポジトリをセットアップしておくことが必要です。 これを行った後に、リポジトリからの Docker のインストールやアップグレードができるようになります。

リポジトリのセットアップ

dnf-plugins-coreパッケージをインストールします。 (このパッケージが DNF リポジトリ管理を行うコマンドを提供します。) そして 安定版(stable)リポジトリを設定します。

$ sudo dnf -y install dnf-plugins-core

$ sudo dnf config-manager \
    --add-repo \
    https://download.docker.com/linux/fedora/docker-ce.repo

任意の作業

最新版(nightly)または テスト版(test)リポジトリの有効化

このリポジトリは上記のdocker.repoファイルに含まれていますが、デフォルトで無効になっています。 このリポジトリを 安定版(stable)リポジトリとともに有効にします。 以下のコマンドは 最新版 リポジトリを有効にします。

$ sudo dnf config-manager --set-enabled docker-ce-nightly

テスト版 チャネルを有効にする場合は、以下のコマンドを実行します。

$ sudo dnf config-manager --set-enabled docker-ce-test

最新版 リポジトリ、 テスト版 リポジトリを無効にするにはdnf config-managerコマンドに--set-disabledフラグをつけて実行します。 再度有効にするには--set-enabledフラグを利用します。 以下のコマンドは 最新版 リポジトリを無効にします。

$ sudo dnf config-manager --set-disabled docker-ce-nightly

最新版テスト版 チャネルについて学ぶのはこちら

Docker Engine のインストール

  1. Docker Engine と containerd の最新版をインストールします。 あるいは次の手順により特定のバージョンをインストールします。

    $ sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin
    

    GPG 鍵を受け入れるかどうか問われたら、鍵の指紋が060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35に間違いないことを確認し、鍵を受け入れてください。

    複数リポジトリからの取得?

    Docker リポジトリを複数有効にしていて、バージョン指定をせずに dnf install によるインストール、またはdnf updateによるアップデートを行うと、入手可能な最新版がインストールされます。 安定した版が必要である場合には、適切でない場合があります。

    これにより Docker をインストールしましたが、まだ起動はしていません。 グループdockerが生成されていますが、このグループには、デフォルトではまだユーザーが存在していない状態です。

  2. 特定バージョンの Docker Engine をインストールする場合は、リポジトリにある利用可能なバージョンの一覧を確認し、いずれかを選んでインストールします。

    a. リポジトリ内にある利用可能なバージョンを並びかえて一覧表示します。 以下の例では出力結果をバージョン番号によりソートします。 一覧は最新のものが上に並びます。バージョンは簡略に表示されます。

    $ dnf list docker-ce  --showduplicates | sort -r
    
    docker-ce.x86_64  3:18.09.1-3.fc28                 docker-ce-stable
    docker-ce.x86_64  3:18.09.0-3.fc28                 docker-ce-stable
    docker-ce.x86_64  18.06.1.ce-3.fc28                docker-ce-stable
    docker-ce.x86_64  18.06.0.ce-3.fc28                docker-ce-stable
    

    この一覧内容は、どのリポジトリを有効にしているかによって変わります。 また利用している Fedora のバージョンに応じたものになります(この例では.fc28というサフィックスにより示されるバージョンです)。

    b. 特定のバージョンをインストールする場合は、有効なパッケージ名を用います。 これはパッケージ名(docker-ce)に加えて、バージョン文字列(2項目め)の初めのコロン(:)から初めのハイフン(-)までを、ハイフンでつなげます。 たとえばdocker-ce-3:18.09.1となります。

    $ sudo dnf -y install docker-ce-<バージョン文字列> docker-ce-cli-<バージョン文字列> containerd.io docker-compose-plugin
    

    これにより Docker をインストールしましたが、まだ起動はしていません。 グループdockerが追加されていますが、このグループには、デフォルトではまだユーザーが存在していない状態です。

  3. Docker を起動します。

    $ sudo systemctl start docker
    
  4. Docker Engine が正しくインストールされているのを確認するため、hello-worldイメージを実行します。

    $ sudo docker run hello-world
    

    このコマンドはテスト用イメージをダウンロードし、コンテナー内で実行します。 コンテナーが起動すると、メッセージを表示して終了します。

これにより Docker Engine をインストールし、実行しました。 Docker コマンドの実行にはsudoが必要になります。 続いて Linux のインストール後 に進み、非特権ユーザーでも Docker コマンドが実行できるように、またその他の追加の設定について見ていきます。

Docker Engine のアップグレード

Docker Engine をアップグレードするには、インストール手順 に従って、インストールしたい新たなバージョンを選んでください。

パッケージからのインストール

Docker リポジトリを利用した Docker インストールができない場合は、目的とするリリースの.rpmファイルをダウンロードして、手動でインストールする方法があります。この場合 Docker Engine をアップグレードするには、毎回新たな.rpmファイルをダウンロードして利用することになります

  1. https://download.docker.com/linux/fedora/ にアクセスして、インストールしている Fedora のバージョンを選択します。 そしてx86_64/stable/Packages/を表示し、インストールしたい.rpmファイルをダウンロードします。

    メモ

    最新版 または テスト版(プレリリース版)パッケージをインストールする場合は URL 内のstablenightlyまたはtestに変更してください。 最新版テスト版チャンネルを学ぶにはこちら

  2. Docker Engine をインストールします。 以下に示すパス部分は、Docker パッケージをダウンロードしたパスに書き換えます。

    $ sudo dnf -y install /path/to/package.rpm
    

    Docker はインストールされましたが、まだ起動はしていません。 またグループdockerは生成されましたが、このグループにユーザーは何も追加されていません。

  3. Docker を起動します。

    $ sudo systemctl start docker
    
  4. Docker Engine が正しくインストールされているのを確認するためhello-worldイメージを実行します。

    $ sudo docker run hello-world
    

    このコマンドはテスト用イメージをダウンロードし、コンテナー内で実行します。 コンテナーが起動すると、メッセージを表示して終了します。

これにより Docker Engine をインストールし、実行しました。 Docker コマンドの実行にはsudoを用いてください。 続いて Linux のインストール後 に進み、非特権ユーザーでも Docker コマンドが実行できるように、またその他の追加の設定について見ていきます。

Docker Engine のアップグレード

Docker Engine をアップグレードする場合は、新たなパッケージファイルをダウンロードして、インストール手順 をもう一度行います。 その際にはdnf -y installでなくdnf -y upgradeを実行します。 またパッケージには新しいものを指定します。

便利スクリプトを使ったインストール

Docker では get.docker.com において便利なスクリプトを提供しています。 これは Docker を開発マシンに対話形式をとらずにすばやくインストールするものです。 このスクリプトを本番環境において利用することはお勧めしませんが、環境に適したプロビジョニングを行うサンプルとして活用することはできます。 また リポジトリを利用したインストール における作業手順に従うことで、パッケージリポジトリを利用したインストール手順を身につけることができます。 このスクリプトのソースコードはオープンソースであり、GitHub 上のdocker-installリポジトリ から入手可能です。

インターネットからスクリプトをダウンロードしたら、まず内容を十分確認してからローカル実行してください。 インストールにあたっては、この便利スクリプトの潜在的リスクや制限について、よく理解してください。

  • スクリプトを実行するにはroot権限かsudoが必要です。
  • スクリプトは自動的に情報取得を行い、利用している Linux ディストリビューション、そのバージョン、そしてパッケージ管理システムの設定を行います。 なおこのスクリプトは、インストール時にパラメーターを受け渡すような設定はできないものになっています。
  • スクリプトは依存パッケージや推奨パッケージをすべてインストールします。 その際にはインストールして良いかどうかを問いません。 したがって相当数のパッケージがインストールされることもあります。 これはホストマシンのその時点での設定によります。
  • このスクリプトはデフォルトでは、最新版の Docker、containerd、runc をインストールします。 このスクリプトを使ってマシンをプロビジョニングした場合、Docker のメジャーバージョンへのアップグレードにより、予期しない結果を引き起こすことがあります。 本番環境へのデプロイを行う際には、必ず (メジャーバージョンへの) アップグレードをテスト環境においてテストしておいてください。
  • このスクリプトは、既にインストールされている Docker をアップグレードするように設計されていません。 このスクリプトを利用して既存インストールをアップデートする際には、依存パッケージが思いどおりにアップデートされない場合があります。 それによって古いバージョンのまま利用する状況となる場合があります。

ヒント: スクリプト実行前のインストールステップ確認

本スクリプトの実行にあたってDRY_RUN=1オプションを指定すると、このスクリプトのインストールステップを確認することができます。

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ DRY_RUN=1 sh ./get-docker.sh

以下は、このスクリプトを get.docker.com からダウンロードして実行することで、Linux 上に最新安定版をインストールする例です。

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
Executing docker install script, commit: 7cae5f8b0decc17d6571f9f52eb840fbc13b2737
<...>

上により Docker がインストールされます。 Debian ベースのディストリビューションでは Docker が自動的に開始されます。 CentOS、Fedora、RHEL、SLES といったRPMベースの場合は手動での実行が必要となるため、systemctlserviceのいずれか適当なものを実行します。 上の出力メッセージに示されているように、デフォルトでは非 root ユーザーによる Docker コマンド実行はできません。

非特権ユーザーでの Docker 利用、rootless モードでのインストール?

このインストールスクリプトでは、Docker をインストールして利用するためにrootあるいはsudoを用いた権限が必要です。 非 root ユーザーに Docker の利用を許可する場合は、Linux インストール後の作業 を参照してください。 Docker はroot権限がなくてもインストールできます。 つまり rootless モードにより実行することができます。 rootless モードにより Docker を実行する手順については root ユーザー以外による Docker デーモン起動(rootless モード) を参照してください。

プレリリース版のインストール

Docker ではこの便利スクリプトを test.docker.com からも提供しています。 これを使って Linux 上にプレリリース版の Docker をインストールできます。 このスクリプトはget.docker.comから入手するものと同等ですが、パッケージリポジトリ内の「テスト」チャネルから、パッケージマネージャーがインストールするものとして設定されています。 このスクリプトには Docker の安定版とプレリリース版(ベータ版、リリース候補版)が含まれています。 このスクリプトを利用すれば、新規リリース機能をいち早く利用できます。 またそういった機能が安定版として提供されるよりも前に、テスト環境において評価することができます。

Linux への Docker 最新版のインストールを「テスト」チャネルから行うには、以下を実行します。

$ curl -fsSL https://test.docker.com -o test-docker.sh
$ sudo sh test-docker.sh
<...>

便利スクリプトを使った後の Docker のアップグレード

便利スクリプトを使って Docker をインストールした場合、Docker のアップグレードはパッケージマネージャーを直接使って行ってください。 便利スクリプトは再実行する意味はありません。 ホストマシンにリポジトリが追加されているところに、このスクリプトを再実行したとすると、そのリポジトリを再度追加してしまうため、問題になることがあります。

Docker Engine のアンインストール

  1. Docker Engine、CLI、Containerd、Docker Compose パッケージをアンインストールします。

    $ sudo dnf remove docker-ce docker-ce-cli containerd.io docker-compose-plugin
    
  2. ホスト上のイメージ、コンテナー、ボリューム、カスタマイズした設定ファイルは自動的に削除されません。 イメージ、コンテナー、ボリュームをすべて削除するには、以下を実行します。

    $ sudo rm -rf /var/lib/docker
    $ sudo rm -rf /var/lib/containerd
    

編集した設定ファイルはすべて手動で削除する必要があります。

次のステップ

requirements, apt, installation, fedora, rpm, install, uninstall, upgrade, update