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

読む時間の目安: 5 分

Docker Desktop for Linux

Docker Desktop は Mac や Windows 上と同じように Linux 上でも、コンテナーのビルド、共有、実行を可能にします。 Docker Desktop for Linux(ベータ版)が入手できるようになり、テストが可能となりました。 詳しくは Docker Desktop for Linux を参照してください。

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

前提条件

OS 要件

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

  • Ubuntu Impish 21.10
  • Ubuntu Hirsute 21.04
  • Ubuntu Focal 20.04 (LTS)
  • Ubuntu Bionic 18.04 (LTS)

Docker Engine はx86_64(またはamd64)、armhfarm64s390xの各アーキテクチャーをサポートします。

Ubuntu 16.04 LTS “Xenial Xerus” の終了

Ubuntu Linux 16.04 LTS は、2021年4月30日に、5年におよぶ LTS Window の期限になりました。 今後はサポートされません。 Docker も今後、このディストリビューションに対するパッケージをリリースしません。 (パッチリリース、セキュリティリリースも行いません。) Ubuntu 16.04 上において Docker を利用しているユーザーは、Ubuntu の現時点でサポートされている LTS バージョンへのアップデートをお勧めします。

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

Docker のかつてのバージョンは、dockerdocker.iodocker-engineと呼ばれていました。 これがインストールされている場合はアンインストールしてください。

$ sudo apt-get remove docker docker-engine docker.io containerd runc

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

/var/lib/docker/にはイメージ、コンテナー、ボリューム、ネットワークが含まれていて、それは保持されたまま残ります。 既存データを保存する必要がなく、クリーンインストールから始めたい場合は、本ページの後段にある Docker Engine のアンインストール を参照してください。

サポートするストレージドライバー

Ubuntu 向けの Docker Engine ではoverlay2aufsbtrfsの各ストレージドライバーをサポートします。

Docker Engine はデフォルトでoverlay2ストレージドライバーを採用しています。 aufsを利用する必要がある場合は、手動で設定しなければなりません。 aufs を参照してください。

インストール手順

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

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

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

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

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

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

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

  1. aptのパッケージインデックスを更新します。 そしてaptが HTTPS 経由でリポジトリにアクセスしパッケージをインストールできるようにします。

    $ sudo apt-get update
    
    $ sudo apt-get install \
        ca-certificates \
        curl \
        gnupg \
        lsb-release
    
  2. Docker の公式 GPG 鍵を追加します。

     $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    
  3. 以下のコマンドを使って安定版(stable)リポジトリをセットアップします。 最新版(nightly)、テスト版(test)の各リポジトリを追加する場合は、以下のコマンドにおけるstableの文字に続けてnightlytestの文字を加えてください。 最新版テスト版チャンネルを学ぶにはこちら

    $ echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    

Docker Engine のインストール

  1. aptのパッケージインデックスを更新します。 そして Docker Engine、containerd、Docker Compose の最新版をインストールします。 あるいは次の手順に行って、特定のバージョンをインストールします。

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

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

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

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

    a. リポジトリ内にある利用可能なバージョンを一覧表示します。

    $ apt-cache madison docker-ce
    
      docker-ce | 5:18.09.1~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu  xenial/stable amd64 Packages
      docker-ce | 5:18.09.0~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu  xenial/stable amd64 Packages
      docker-ce | 18.06.1~ce~3-0~ubuntu       | https://download.docker.com/linux/ubuntu  xenial/stable amd64 Packages
      docker-ce | 18.06.0~ce~3-0~ubuntu       | https://download.docker.com/linux/ubuntu  xenial/stable amd64 Packages
    

    b. 特定のバージョンをインストールする場合は、2 項目めにあるバージョン文字列を使ってインストールします。 たとえば5:18.09.1~3-0~ubuntu-xenialとなります。

    $ sudo apt-get install docker-ce=<バージョン文字列> docker-ce-cli=<バージョン文字列> containerd.io docker-compose-plugin
    
  3. Docker Engine が正しくインストールされているのを確認するため、hello-worldイメージを実行します。

    $ sudo docker run hello-world
    

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

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

Docker Engine のアップグレード

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

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

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

  1. https://download.docker.com/linux/ubuntu/dists/ にアクセスして、インストールしたい Ubuntu バージョンを選びます。 そしてpool/stable/にアクセスし、amd64armhfarm64s390xのいずれかを選び、インストールしたいバージョンの Docker Engine に対応する.debファイルをダウンロードします。

    メモ

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

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

    $ sudo dpkg -i /path/to/package.deb
    

    Docker デーモンは自動的に起動します。

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

    $ sudo docker run hello-world
    

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

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

Docker Engine のアップグレード

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

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

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 apt-get purge 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, ubuntu, install, uninstall, upgrade, update