Fedora

Docker は Fedora バージョン 22 と 23 をサポートします。このページでは Docker が管理しているパッケージとインストール手法を使ってインストールします。これらパッケージを使い、Docker の最新リリースを入手します。もし Fedora が管理するパッケージを使いたい場合は、Fedora の Docker サポートに関する Fedora リリース情報のドキュメントをお調べください。

動作条件

Docker は 64bit でインストールされた何らかの Fedora バージョンを必要とします。さらに、 kernel は少なくとも 3.10 以上が必要です。現在のカーネル・バージョンを確認するには、ターミナルを開き、 uname -r を使ってカーネルのバージョンを確認します。

$ uname -r
3.19.5-100.fc21.x86_64

もし kernel のバージョンが古ければ、更新する必要があります。

最後に、システムを全て更新することをお勧めします。システムは潜在的なカーネルのバグを修正するために、全てパッチを当てるべきと考慮ください。報告されているカーネルのバグは、最新のカーネル・パッケージでは修正済みの場合があります。

インストール

Docker エンジンをインストールするには2つの方法があります。 dnf パッケージ・マネージャを使い、直接自分でインストールできます。あるいは、 curlget.docker.com を使う方法があります。2つめの方法はインストール用のスクリプトを実行すると、 dnf パッケージ・マネージャを通してセットアップします。

dnf でインストール

  1. マシンに sudo あるいは root 特権のあるユーザでログインします。
  1. 既存の dnf パッケージを更新します。
$ sudo dnf update
  1. yum リポジトリを手動で追加します。
$ sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/fedora/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
  1. Docker パッケージをインストールします。
$ sudo dnf install docker-engine
  1. Docker デーモンを開始します。
$ sudo systemctl start docker
  1. docker が正常にインストールされたか確認するため、コンテナでテスト用イメージを実行します。
$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
    latest: Pulling from hello-world
    a8219747be10: Pull complete
    91c95931e552: Already exists
    hello-world:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security.
    Digest: sha256:aa03e5d0d5553b4c3473e89c8619cf79df368babd1.7.1cf5daeb82aab55838d
    Status: Downloaded newer image for hello-world:latest
    Hello from Docker.
    This message shows that your installation appears to be working correctly.


    To generate this message, Docker took the following steps:
     1. The Docker client contacted the Docker daemon.
     2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
            (Assuming it was not already locally available.)
     3. The Docker daemon created a new container from that image which runs the
            executable that produces the output you are currently reading.
     4. The Docker daemon streamed that output to the Docker client, which sent it
            to your terminal.


    To try something more ambitious, you can run an Ubuntu container with:
     $ docker run -it ubuntu bash


    For more examples and ideas, visit:
     http://docs.docker.com/userguide/

スクリプトでインストール

  1. マシンに sudo あるいは root 特権のあるユーザでログインします。
  1. 既存の dnf パッケージを更新します。
$ sudo dnf update
  1. Docker インストール用スクリプトを実行します。
$ curl -fsSL https://get.docker.com/ | sh

このスクリプトは docker.repo リポジトリを追加し、Docker をインストールします。

  1. Docker デーモンを起動します。
$ sudo systemctl start docker
  1. docker が正常にインストールされたか確認するため、コンテナでテスト用イメージを実行します。
$ sudo docker run hello-world

docker グループの作成

docker デーモンは TCP ポートの替わりに Unix ソケットをバインドします。デフォルトでは、Unix ソケットは root ユーザによって所有されており、他のユーザは sudo でアクセスできます。このため、 docker デーモンは常に root ユーザとして実行されています。

docker コマンド利用時に sudo を使わないようにするには、 docker という名称のグループを作成し、そこにユーザを追加します。 docker デーモンが起動すると、docker グループの所有者により Unix ソケットの読み書きが可能になります。

警告

docker グループは root ユーザ相当です。システム上のセキュリティに対する影響の詳細は、 Docker デーモンが直面する攻撃 をご覧ください。

docker グループを作成し、ユーザを追加するには、

  1. Fedora に sudo 特権のあるユーザでログインします。
  1. docker グループを作成し、ユーザを追加します。
$ sudo usermod -aG docker ubuntu
  1. ログアウトしてから、再度ログインします。

対象ユーザが正しい権限を持つようにするためです。

  1. sudo を使わずに docker が実行できることを確認します。
$ docker run hello-world

ブート時の Docker 自動起動を設定

Docker をブート時に起動するようにするには、次のように実行します。

$ sudo systemctl enable docker

HTTP プロキシの追加が必要な場合、Docker のランタイム・ファイルを異なったディレクトリやパーティションに置いてください。あるいは別のカスタマイズ方法として、Systemd の記事 Systemd Docker デーモン・オプションのカスタマイズ から、どのように設定するかをご覧ください。

Docker をマニュアル定義ネットワークで実行

systemd バージョン 219 以上では、 systemd-network を使い、手動でネットワークを設定できます。そのため、Docker でコンテナを起動してもネットワークに接続できないかもしれません。バージョン 220 を使う場合、ネットワークの転送設定( net.ipv4.conf.<インターフェース>.forwarding )がデフォルトでは off です。この設定は IP 転送を阻止します。また、これは Docker がコンテナの中で設定する net.ipv4.conf.all.forward と競合します。

動作するためには、Docker ホスト上の /usr/lib/systemd/network/ にある <インターフェース>.network ファイルを編集し(例: /usr/lib/systemd/network/80-container-host0.netowrk )、次のブロックを追加します。

[Network]
...
IPForward=kernel
# OR
IPForward=true
...

この設定は、コンテナからと予想される IP 転送を許可するものです。

アンインストール

Docker ソフトウェアを dnf でアンインストール可能です。

  1. インストールしたパッケージの一覧を表示します。
$ dnf list installed | grep docker
docker-engine.x86_64     1.7.1-0.1.fc21 @/docker-engine-1.7.1-0.1.fc21.el7.x86_64
  1. パッケージを削除します。
$ sudo dnf -y remove docker-engine.x86_64

上記のコマンドは、イメージ、コンテナ、ボリュームやホスト上の設定ファイルを削除しません。

  1. イメージ、コンテナ、ボリュームを削除するには次のコマンドを実行します。
$ rm -rf /var/lib/docker
  1. ユーザが作成した設定ファイルを探して削除します。

参考

Install on Fedora
https://docs.docker.com/engine/fedora/