このドキュメントで説明されているソフトウェアはサポートされていないか、拡張サポートが提供されています。
現在サポートされているリリースにアップグレードすることをお薦めします。

2.1 Oracle Linux 6でのDocker Engineのインストールおよび構成

注意

Dockerバージョン1.9以降では、Unbreakable Enterprise Kernelリリース4 (UEK R4)を使用するようにシステムを構成し、このカーネルを使用してシステムを起動する必要があります。

Oracle Linux 6システムにDocker Engineをインストールして構成する手順:

  1. Dockerをインストールする場合は、Unbreakable Enterprise Kernelリリース4(UEK R4)を使用し、このカーネルでシステムをブートするようにシステムを構成します:

    1. システムがULNに登録されている場合は、ol6_x86_64_UEKR3_latestまたはol6_x86_64_UEK_latestチャネルへのアクセスを無効にし、ol6_x86_64_UEKR4チャネルへのアクセスを有効にします。

      Oracle Linux yumサーバーを使用する場合は、ol6_UEKR3_latestリポジトリを無効にし、/etc/yum.repos.d/uek-ol6.repoのリポジトリ構成ファイルで、次のようにol6_UEKR4リポジトリを有効にします:

      [ol6_UEKR4]
      name=Latest Unbreakable Enterprise Kernel Release 4 for Oracle Linux $releasever ($basearch)
      baseurl=https://yum.oracle.com/repo/OracleLinux/OL6/UEKR4/$basearch/
      gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
      gpgcheck=1
      enabled=1
      
      [ol6_UEKR3_latest]
      name=Latest Unbreakable Enterprise Kernel for Oracle Linux $releasever ($basearch)
      baseurl=https://yum.oracle.com/repo/OracleLinux/OL6/UEKR3/latest/$basearch/
      gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
      gpgcheck=1
      enabled=0
      
      [ol6_UEK_latest]
      name=Latest Unbreakable Enterprise Kernel for Oracle Linux $releasever ($basearch)
      baseurl=https://yum.oracle.com/repo/OracleLinux/OL6/UEK/latest/$basearch/
      gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
      gpgcheck=1
      enabled=0
    2. 次のコマンドを実行して、システムをUEK R4にアップグレードします。

      # yum update
    3. UEK R4を確実にデフォルトの起動カーネルにするには、/boot/grub/grub.confを編集してdefaultディレクティブの値を変更し、UEK R4カーネルのエントリの索引を作成します。 たとえば、UEK R4カーネルが最初のエントリの場合、defaultの値を0に設定します。

    4. これがデフォルトのブート・カーネルでない場合は、システムを再起動して、UEK R4カーネルを選択します。

      # reboot
  2. システムがULNで登録されている場合は、ol6_x86_64_addonsチャネルを有効にします。

    Oracle Linux yumサーバーを使用する場合は、次のように、/etc/yum.repos.d/oracle-linux-ol6.repoのリポジトリ構成ファイルでol6_addonsリポジトリを有効にします:

    [ol6_addons]
    name=Oracle Linux $releasever Add ons ($basearch)
    baseurl=https://yum.oracle.com/repo/OracleLinux/OL6/addons/$basearch/
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
    gpgcheck=1
    enabled=1
  3. docker-engineパッケージをインストールします。

    # yum install docker-engine
  4. デフォルトで、Docker Engineはデバイス・マッパーをストレージ・ドライバとして使用してDockerコンテナを管理します。 LXCの場合と同様に、btrfsのスナップショット機能を代用すると便利です。

    注意

    技術的な安定性と成熟度により、btrfsを使用することを推奨します。 btrfs用の新しいデバイスが利用できない場合は、パフォーマンス上の理由から、devicemapperの代わりにoverlay2を記憶域ドライバとして使用する必要があります。 overlay2を構成するには、/etc/sysconfig/dockerother_args--storage-driver=overlay2オプションを追加します。 overlayfsファイル・システムはUEK R4で使用可能です。

    詳細は、https://docs.docker.com/engine/userguide/storagedriver/overlayfs-driver/を参照してください。

    Docker Engineでデバイス・マッパーのかわりにbtrfsを使用するように構成する手順:

    1. yumを使用してbtrfs-progsパッケージをインストールします。

      # yum install btrfs-progs

    2. この例では、/dev/sdbなどの適切なデバイス上でbtrfsファイル・システムを作成します。

      # mkfs.btrfs /dev/sdb

      注意

      複数のコンテナの格納に十分なサイズの未使用のブロック・デバイスが適しています。 推奨の最小サイズは1GBですが、複合Dockerアプリケーションを実装するには、さらに領域が必要になります。 システムが仮想マシンの場合は、新しい仮想ディスクを作成、パーティショニング、およびフォーマットすることを推奨します。 あるいは、既存のext3またはext4ファイル・システムをbtrfsに変換します。 「Oracle Linuxリリース6の管理者ソリューション・ガイド」https://docs.oracle.com/cd/E37670_01/E37355/html/ol_use_case7_btrfs.htmlを参照してください。 LVMボリューム・グループに使用可能な領域がある場合は、新しい論理ボリュームを作成し、それをbtrfsファイル・システムとしてフォーマットできます。

    3. /var/lib/dockerにファイル・システムをマウントします。 新規インストール時には、最初にこのディレクトリの作成が必要になることがあります。

      # mkdir /var/lib/docker
      # mount /dev/sdb /var/lib/docker

      重要

      実行する予定のすべてのイメージとコンテナについて、常に/var/lib/dockerに使用可能なディスク・スペースがあることを確認することが重要です。 実行中のコンテナが/var/lib/dockerを満たすと、Dockerエンジンの再起動が失敗し、次のようなエラーが発生します:

      Error starting daemon: write /var/lib/docker/volumes/metadata.db:
      no space left on device 

      Dockerエンジンが実行されていないと、既存または古いイメージをクリーンアップまたは削除することが困難になります。 このような場合は、/var/lib/docker/tmpの内容を削除してスペースを確保してください。 しかし、最良の解決策は、Dockerエンジンが実行に必要なディスク領域を使い果たしてしまうシナリオを防ぐクォータを実装することで、このような状況になるのを避けることです。

    4. /etc/fstabファイルに/var/lib/dockerのエントリを追加します。

      /dev/sdb      /var/lib/docker    btrfs    defaults   0 0

  5. /etc/sysconfig/dockerを編集して、たとえば次のように、グローバル・ネットワーキング・オプションを構成します。

    • システムがWebプロキシを使用してDocker Hubにアクセスする必要がある場合は、次の行を追加します:

      export HTTP_PROXY="proxy_URL:port"
      export HTTPS_PROXY="proxy_URL:port"

      proxy_URLportをWebプロキシの適切なURLおよびポート番号に置き換えます。

    • バージョン1.5以降のDockerでIPv6サポートを構成するには、たとえば次のように、--ipv6オプションをOPTIONSに追加します。

      OPTIONS="--ipv6"

      IPv6が有効化されると、Dockerはブリッジdocker0にリンクローカルIPv6アドレスfe80::1を割り当てます。

      DockerがグローバルIPv6アドレスをコンテナに割り当てる場合は、たとえば次のように、追加でIPv6サブネットを--fixed-cidr-v6オプションに指定します。

      OPTIONS="--ipv6 -- fixed-cidr-v6='2001:db8:1::/64'"

    Dockerネットワーキングの構成の詳細については、https://docs.docker.com/engine/userguide/networking/を参照してください。

  6. バージョン1.5以降のDockerで、ドッカー・サービスは、マウント・ネームスペースを共有解除して、デバイス・マッパー・ストレージ・ドライバにおけるdevice busyの問題を解決します。 ただし、この構成により、ホスト・システム内のautofsをブレークし、ドッカー・コンテナ内で続いてマウントされるボリュームへのアクセスを防ぎます。 回避策として、Dockerサービスがマウント・ネームスペースを共有解除しないようにします。

    /etc/init.d/dockerを編集し、デーモンを開始する行から$unshare -m --パラメータを除去します。 たとえば、次のような行を変更します:

    "$unshare" -m -- $exec $other_args &>> $logfile &

    変更後:

    $exec $other_args &>> $logfile &
    注意

    dockerパッケージを更新し、/etc/init.d/dockerへの変更が上書きされた場合、この解決法を再度適用する必要があります。

  7. dockerサービスを開始して、ブート時に起動するように構成します。

    # service docker start
    # chkconfig docker on

注意

mlocateパッケージがインストールされている場合は、次のように、/etc/updatedb.confPRUNEPATHSエントリを変更して、updatedb/var/lib/docker下のディレクトリの索引付けを行わないようにすることをお薦めします。

PRUNEPATHS="/media /tmp /var/lib/docker /var/spool /var/tmp"

このエントリは、locateがDockerコンテナに属するファイルをレポートするのを防ぎます。

dockerサービスが実行されていることを確認するには、次のコマンドを使用します。

# service docker status
docker (pid  1958) is running...

次のようにdockerコマンドを使用して、Docker Engineの構成およびバージョンに関する情報を表示することもできます。

# docker info
Containers: 0
Images: 6
Storage Driver: btrfs
Execution Driver: native-0.2
Kernel Version: 3.8.13-35.3.1.el7uek.x86_64
Operating System: Oracle Linux Server 6.6

# docker version
Client version: 1.3.3
Client API version: 1.15
Go version (client): go1.3.3
Git commit (client): 4e9bbfa/1.3.3
OS/Arch (client): linux/amd64
Server version: 1.3.3
Server API version: 1.15
Go version (server): go1.3.3
Git commit (server): 4e9bbfa/1.3.3

詳細は、docker(1)マニュアル・ページを参照してください。