Debian

Docker は以下の Debian バージョンをサポートしています。

  • Debian testing stretch (64-bit)
  • Debian 8.0 Jessie (64-bit)
  • Debian 7.7 Wheezy (64-bit) (バックポートが必要)

注釈

以前に Docker を apt でインストールしていた場合は、 apt ソースを新しい Docker リポジトリに更新してください。

動作条件

Docker は 64bit でインストールされた何らかの Debian バージョンを必要とします。さらに、kernel は少なくとも 3.10 以上が必要です。最新の 3.10 マイナーバージョンか、それよりも新しいバージョンが利用可能です。

3.10 よりも低いカーネルは、Docker コンテナ実行時に必要な一部の機能が足りません。古いバージョンは既知のバグがあります。その影響により、特定条件下でデータの損失や定期的なカーネルパニックを引き起こします。

現在のカーネル・バージョンを確認するには、ターミナルを開き、 uname -r を使ってカーネルのバージョンを確認します。

$ uname -r

さらに、 Debian Wheezy の利用者はバックポートが必ず必要です。Wheezy でバックポートを有効にするには、次のようにします:

  1. マシンにログインし、 sudo あるいは root 権限のターミナルを開きます。
  1. 任意のエディタで /etc/apt/sources.list.d/backports.list ファイルを開きます。

ファイルが無ければ作成します。

  1. 既存のエントリがあれば削除します。
  1. Debian Wheezy にバックポートのエントリを追加します。

エントリの例

deb http://http.debian.net/debian wheezy-backports main
  1. パッケージ情報を更新します。
$ apt-get update

apt ソースの更新

Docker 1.7.1 以上は Docker の apt リポジトリに保管されています。 apt が新しいリポジトリにあるパッケージを使えるように設定します。

  1. まだであれば Debian サーバに特権ユーザでログインします。
  1. ターミナルのウインドウを開きます。
  1. 古いリポジトリをパージします。
$ apt-get purge lxc-docker*
$ apt-get purge docker.io*
  1. パッケージ情報を更新します。 APT が https メソッドで動作することを確認し、 CA 証明書がインストールされるのを確認します。
  1. 新しい GPG 鍵を追加します。
$ apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
  1. /etc/apt/sources.list.d/docker.list ファイルを好みのエディタで開きます。

ファイルが存在しなければ、作成します。

  1. 既存のエントリがあれば削除します。
  1. Debian オペレーティング・システム向けのエントリを追加します。

利用可能なエントリは以下の通りです。

  • Debian Wheezy
deb https://apt.dockerproject.org/repo debian-wheezy main
  • Debian Jessie
deb https://apt.dockerproject.org/repo debian-jessie main
  • Debian Stretch/Sid
deb https://apt.dockerproject.org/repo debian-stretch main
  1. ファイルを保存して閉じます。
  1. APT パッケージのインデックスを更新します。
$ apt-get update
  1. APT が正しいリポジトリから取得しているか確認します。
$ apt-cache policy docker-engine

これで apt-get update を実行すると、 APT は新しいリポジトリから取得します。

Docker インストール

Docker インストール前に、必要条件で説明した通り、 APT リポジトリを正しく設定してください。

  1. APT パッケージのインデックスを更新します。
$ sudo apt-get update
  1. Docker をインストールします。
$ sudo apt-get install docker-engine
  1. docker デーモンを開始します。
$ sudo service docker start
  1. docker が正常にインストールされたか確認します。
$ sudo docker run hello-world

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

root 以外のアクセス指定

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

あなた(もしくは Docker インストーラ)は、docker という名称のグループを作成し、そこにユーザを追加します。 docker デーモンが起動すると、docker グループの所有者により Unix ソケットの読み書きが可能になります。 docker デーモンは常に root ユーザとして実行しなくてはいけませんが、 docker グループのユーザであれば、 docker クライアントを実行できますので、 sudo 設定を全てのクライアントのコマンドに追加する必要はありません。Docker 0.9.0 移行は、 -G フラグを使って別のグループを指定できます。

警告

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

例:

# docker グループが存在していなければ追加します。
$ sudo groupadd docker

# 接続するユーザ "${USER}" を docker グループに追加します。
# 適切なユーザ名に変更してください。
# この設定が反映されるのは、ログアウト後に、戻ってきてからです。
$ sudo groupadd docker
$ sudo gpasswd -a ${USER} docker

# Docker デーモンを再起動します。
$ sudo service docker restart

Docker のアップグレード

Docker の最新版をインストールするには、 apt-get を使います。

$ apt-get upgrade docker-engine

アンインストール

Docker パッケージをアンインストールします。

$ sudo apt-get purge docker-engine

Docker パッケージと必要の無い依存関係をアンインストールします。

$ sudo apt-get autoremove --purge docker-engine

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

$ rm -rf /var/lib/docker

ユーザが作成した設定ファイルは、手動で削除する必要があります。