Ubuntu 15.04, 14.04 LTS にDocker Engine をインストールする
Ubuntu でDocker を使うときのために、Docker のapt リポジトリから
https://get.docker.com/
からスクリプトを取得、実行してインストールする方法がありましたが、最近はDocker Engine のリポジトリを追加してapt-get でインストールする方法が出てきているようなので、その手順を日本語でまとめておきました。
最速で
Gist にまとめておいたので、以下のコマンドを実行すればインストールできます(Ubuntu 15.10, 14.04 LTS で動作確認済み)。
# curl https://gist.githubusercontent.com/TsutomuNakamura/36920d251c81ec6638f7/raw | sudo bash
以上でインストールは完了です。これより以下の記述は、手順をひとつひとつやっていく場合の解説になります。
要件
- 要件
Ubuntu のバージョン(こちらで動作確認したもの) | 15.10, 15.04 |
---|---|
アーキテクチャ | 64 bit |
kernel | 3.10 以上 |
kernel のバージョンの確認
kernel のバージョンを確認します。
$ uname -r
3.19.0-25-generic
パッケージの認証用キーの追加
apt-key コマンドを使用してapt パッケージ認証用の鍵を登録します。
$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
リポジトリの追加
Docker Engine をインストールするためのリポジトリを/etc/apt/sources.list.d/docker.list
に追加します。
存在しない場合はファイルを新規作成、既に何かが書かれている場合はそれを一旦削除して新しくエントリを追加してください。
登録する内容は以下のコマンドの通りです。
$ . /etc/lsb-release
$ echo ${DISTRIB_CODENAME,,}
trusty
$ echo deb https://apt.dockerproject.org/repo ubuntu-${DISTRIB_CODENAME,,} main | sudo tee /etc/apt/sources.list.d/docker.list
apt パッケージインデックスの更新
apt-get update
コマンドを実行してパッケージインデックスを更新します。
$ sudo apt-get update
古いDocker を削除する
古いrepo からインストールしたDocker がある場合は事前にそれを削除しておきます。
$ sudo apt-get purge lxc-docker
推奨パッケージのインストール
必須ではありませんが、linux-image-extra
パッケージをDocker Engine をインストールする前にインストールしておいてください。
Docker ストレージドライバとしてaufs を使えるようになります。
$ sudo apt-get install linux-image-extra$(uname -r)
Docker Engine のインストール
以上でDocker Engine をインストールする準備が整いましたので、Docker Engine をapt-get
コマンドでインストールしましょう。
$ sudo apt-get install docker-engine
動作確認
インストールが完了したら、hello-world を実行してみましょう。
$ sudo docker run hello-world
メッセージが表示されればインストールは成功です。
これより以下の手順は必要に応じて実施してください。
ユーザのdocker グループへの追加
デフォルトで、Docker Engine は/var/run/docker.sock
にUnix ドメインソケットを作成し、そこからdocker コマンドを使ってDocker デーモンとのやり取りを行うことになります。
そこで、root 以外のユーザがsudo を使わなくてもdocker コマンドを使えるように、必要に応じてユーザをdocker ユーザに追加する作業を行ってください。
既存のユーザにグループを追加する場合は、usermod -aG
コマンドで追加します。
$ sudo usermod -aG docker someuser
メモリとSwap の調整について
docker デーモンを起動すると下記のようなWARNING がログに出力されることがあります。
... WARNING: Your kernel does not support cgroup swap limit.
... WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.
このWARNING メッセージを出力されないようにするには、memory/swap のaccounting 機能を有効にすることで可能です。
しかし、以下の副作用がある点に注意してください。
- トータルで利用可能なメモリの約1% がオーバヘッドとして費やされる
- パフォーマンスが約10% 劣化する
- これらの副作用は有効にしている間、たとえDocker Engine を停止させたとしてもついてくる
そのため、memory、swap を酷使するような環境で、Docker コンテナがmemory やswap を浪費するような心配性が無い場面(Web アプリの開発環境としてのコンテナ等)では、パフォーマンスを考慮して無効のままとしておくのが良いでしょう。
以下、memory accounting 機能を有効化する手順です。
/etc/default/grub
ファイルに以下の1 行を追加します。
GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
ファイルを編集したらupdate-grub
コマンドを実行してGRUB を更新し、OS を再起動させます。
$ sudo update-grub
$ sudo shutdown -r now
UFW の設定
もし、あなたが使っているubuntu でUFW がon となっていて、HOST の外部からDocker デーモンに接続されることを意図している場合(docker 起動時に"-H tcp://0.0.0.0:2375" といったようなオプションが指定されている場合)、デフォルとでUFW はパケット転送禁止しているので効化する必要があります。
まず、以下のコマンドでUFW がon になっているかどうかを確認することができます。
$ sudo ufw status
Status: active
/etc/default/ufw
ファイルを開き、下記のように編集します。
DEFAULT_FORWARD_POLICY="ACCEPT"
ファイルを編集したら、reload
します。
$ sudo ufw reload
Docker Engine では一般的に外部からの接続においては、2375 port を非TLS/SSL の接続ポートとして使用し、2376 port をSSL/TLS のDocker Engine デーモンのポートとして使用するのが一般的です。
UFW で、これらのport に対するアクセスを許可するには以下のようにコマンドを実行します。
$ sudo ufw allow 2375/tcp
参考
- Ubuntu(Docker document)
- https://docs.docker.com/engine/installation/ubuntulinux/