バイナリからの Docker Engine インストール

重要

このページでは、Docker のバイナリをインストールする方法について示しています。 テスト目的であれば、この手順でも問題ありません。 ただしこのバイナリを用いて、本番環境に Docker をインストールすることはお勧めしません。 そうしてしまうと、セキュリティアップデートが自動的に適用されないためです。 このページにおいて説明する Linux バイナリは、スタティックリンクが行われています。 これはつまり、ビルド時に依存するパッケージ内にぜい弱性があると、利用する Linux ディストリビューションがセキュリティアップデートを行っても、自動的にパッチ適用されないということです。

Docker インストールをパッケージマネージャーから行っていたり、Docker Desktop を通じて行っている場合に比べると、バイナリのインストールでは更新作業が少々面倒です。 Docker の新規リリースが行われた際には、インストール更新を (手動で) 行う必要があるためです。

またスタティックリンクによるバイナリでは、ダイナミックリンクに基づくパッケージが提供する機能がすべて含まれていない場合があります。

Windows や Mac を利用する場合は、バイナリの代わりに Docker Desktop のインストールをお勧めします。 Linux の場合は、各ディストリビューションに固有のインストール手順に従うことをお勧めします。

Docker を利用したい、あるいはテスト環境で使いたいと思っても、お使いのプラットフォームでは Docker がサポートされていなかったとします。 そんなときはスタティックリンクされたバイナリをインストールしてみてください。 可能であれば、お使いのオペレーティングシステム用にビルドされたパッケージを使い、オペレーティングシステムのパッケージ管理方法に基づいて Docker のインストールやアップグレードを行ってください。

Docker デーモンに対するスタティックバイナリは、Linux (dockerd) と Windows (dockerd.exe) でのみ利用可能です。 Docker クライアントに対するスタティックバイナリは、Linux、Windows、macOS で利用可能です(docker)。

ここでは Linux、Windows、macOS におけるバイナリモジュールのインストール方法を説明します。

Linux におけるデーモンとクライアントのバイナリインストール

前提条件

Docker のバイナリをインストールする場合には、ホストマシンが以下の前提条件を満たしていることを確認してください。

  • 64 ビットシステム。
  • Linux カーネルのバージョンは 3.10 またはそれ以上。 利用するプラットフォームが提供する最新カーネルを用いることを推奨。
  • iptablesのバージョンは 1.4 またはそれ以上。
  • gitのバージョンは 1.7 またはそれ以上。
  • ps実行モジュールがあること。通常procpsあるいは類似パッケージが提供している。
  • XZ Utils のバージョンは 4.9 またはそれ以上。
  • cgroupfs階層が適切にマウントされていること。 単純にすべてを取りまとめたcgroupマウントポイントでは不十分です。 Github の 以下の issue を参考にしてください。 #2683#3485#4568

できるだけセキュアな環境を

OS に関すること

利用可能であれば SELinux や AppArmor を有効にしてください。

利用する Linux ディストリビューションが SELinux または AppArmor をサポートしている場合は、それらを利用することを推奨します。 これを有効にしていればセキュリティは向上し、ある種のセキュリティ攻撃を防ぐことにもつながります。 SELinux や AppArmor を設定し有効にする手順については、各 Linux ディストリビューションのドキュメントを参照してください。

セキュリティ警告

このセキュリティ機能を有効にしていた場合には、Docker やコンテナーを動作させたいからというので、機能を無効にするのはお止めください。 そのかわりに、正しく機能するように設定を適切に行ってください。

Docker デーモンに関すること

スタティックバイナリのインストール

  1. スタティックバイナリのアーカイブをダウンロードします。 https://download.docker.com/linux/static/stable/ へ行き、対応するハードウェアプラットフォーム向けのものを選びます。 必要としている Docker Engine のバージョンに対応づいた .tgz ファイルをダウンロードします。

  2. tar ユーティリティーを使ってアーカイブを展開します。 バイナリ dockerddocker が抽出されます。

    $ tar xzvf /path/to/<FILE>.tar.gz
    
  3. 任意の作業 上のバイナリを実行パスの通ったディレクトリ、たとえば /usr/bin/ などに移動させます。 この作業を行わない場合、dockerdockerd コマンドを起動する際には、常に実行ファイルへのパスも指定する必要があります。

    $ sudo cp docker/* /usr/bin/
    
  4. Docker デーモンを起動します。

    $ sudo dockerd &
    

    デーモンに追加のオプションをつけて実行する必要がある場合は、上記のコマンドそれぞれを修正するか、あるいは設定ファイル /etc/docker/daemon.json を生成編集します。 そこに必要な設定オプションを追加します。

  5. Docker が正しくインストールされたことを確認するために hello-world イメージを実行します。

    $ sudo docker run hello-world
    

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

インストールは正常に終了し Docker Engine が起動します。

情報

非 root ユーザーでの実行時にエラーが発生したら?

ユーザーグループ docker は存在していてもユーザーが一切含まれていない状態の場合、Docker コマンドの実行にあたっては sudo の利用を求められることになります。 Linux インストール後の作業 を確認して、Docker コマンドやその他の設定作業を非特権ユーザーにも許可する手順を進めてください。

macOS におけるクライアントのバイナリインストール

メモ

以下に示す手順は、テスト目的であれば問題ありません。 macOS のバイナリには Docker クライアントのみが含まれています。 逆に、コンテナー起動に必要となる dockerd デーモンは含まれていません。 したがってこの代わりに Docker Desktop をインストールすることをお勧めします。

Mac 用のバイナリには、以下のものは含まれません。

  • ランタイム環境。エンジンを機能させるためには、仮想マシンやリモートの Linux マシンを用意して環境設定を行う必要があります。
  • buildxdocker compose といった Docker コンポーネント。

クライアント用バイナリをインストールするには、以下の手順を行います。

  1. スタティックバイナリのアーカイブをダウンロードします。 https://download.docker.com/mac/static/stable/ にアクセスして、x86_64 (Intel チップの Mac の場合) または aarch64 (Apple シリコンの Mac の場合) を選びます。 そして必要としている Docker Engine のバージョンに対応づいた .tgz ファイルをダウンロードします。

  2. tar ユーティリティーを使ってアーカイブを展開します。 バイナリ docker が抽出されます。

    $ tar xzvf /path/to/<FILE>.tar.gz
    
  3. 拡張属性をクリアして実行できるようにします。

    $ sudo xattr -rc docker
    

    この後に以下のコマンドを実行すれば、Docker CLI の利用方法を示す出力が行われます。

    $ docker/docker
    
  4. 任意の作業 上のバイナリを実行パスの通ったディレクトリ、たとえば /usr/local/bin/ などに移動させます。 この作業を行わない場合、dockerdockerd コマンドを起動する際には、常に実行ファイルへのパスも指定する必要があります。

    $ sudo cp docker/docker /usr/local/bin/
    
  5. Docker が正しくインストールされたことを確認するために hello-world イメージを実行します。 <hostname> にはホスト名かその IP アドレスを指定します。 このホストは Docker デーモンが起動しているマシンのことであり、クライアントからアクセス可能であるものです。

    $ sudo docker -H <hostname> run hello-world
    

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

Windows におけるサーバーとクライアントのバイナリインストール

メモ

以下に示す節では、Windows Server 上に Docker デーモンをインストールする方法を説明します。 これは Windows コンテナーを動作させることしかできません。 Windows Server 上の Docker デーモンをインストールしている場合、そのデーモンには buildxdocker composeといった Docker コンポーネントは含まれません。 Windows 10 や 11 を利用している場合は、その代わりに Docker Desktop をインストールすることをお勧めします。

Windows 用のバイナリパッケージには dockerd.exedocker.exe の両方が含まれます。 Windows においてこのバイナリは、ネイティブな Windows コンテナー (つまり Linux コンテナーではない) だけを実行する機能を提供しています。

サーバーとクライアントのバイナリをインストールするには、以下の手順を行います。

  1. スタティックバイナリのアーカイブをダウンロードします。 https://download.docker.com/win/static/stable/x86_64 にアクセスして、一覧の中から最新版を選択します。

  2. 以下の PowerShell コマンドを実行して、自マシンの program files にアーカイブを抽出、インストールします。

    PS C:\> Expand-Archive /path/to/<FILE>.zip -DestinationPath $Env:ProgramFiles
  3. サービス登録を行って Docker Engine を起動します。

    PS C:\> &$Env:ProgramFiles\Docker\dockerd --register-service
    PS C:\> Start-Service docker
  4. Docker が正しくインストールできたことを確認するため、hello-world イメージを実行します。

    PS C:\> &$Env:ProgramFiles\Docker\docker run hello-world:nanoserver

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

スタティックバイナリのアップグレード

Docker Engine を手動によりインストールしていて、これをアップデートする場合は、まずローカルで起動させている dockerd あるいは dockerd.exe のプロセスをすべて終了させます。 そして通常の手順により新しいバージョンをインストールします。

次のステップ