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

読む時間の目安: 3 分

重要

このページでは、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
    

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

macOS においてクライアントのバイナリをインストール

メモ

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

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

  • ランタイム環境。エンジンを機能させるためには、仮想マシンやリモートの Linux マシンを用意して環境設定を行う必要があります。
  • buildxdocker scandocker 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 用のバイナリには、buildxdocker scandocker 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のプロセスをすべて終了させます。 そして通常の手順により新しいバージョンをインストールします。

次のステップ

binaries, installation, docker, documentation, linux