今日はVagrant経由で立てたUbuntuにDockerをインストールします。公式サイトを参考に、一部補足の説明をいれながら進めます。
Instructions for installing Docker on Ubuntu.
環境
- Ubuntu 14.04
- Vagrant 1.7.4
- Docker
UbuntuはVagrantで構築したVMです。
事前準備
まずはDokcerのレポジトリを認証をします。
$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates
$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
次に/etc/apt/sources.list.d/docker.list
を編集します。なければ作りましょう。そこにレポジトリURLを記述します。もし既にdocker.list
に何かしらの記述があれば、それを消してこの一行を記述します。
deb https://apt.dockerproject.org/repo ubuntu-trusty main
レポジトリのURLを追加したらapt-get update
します。
$ sudo apt-get update
古いバージョンのdockerがあればアンインストールしておきます。
$ sudo apt-get purge lxc-docker
一応、追加したパッケージの情報の確認。
$ sudo apt-cache policy docker-engine
こんな感じの情報がでます。
docker-engine:
Installed: 1.11.2-0~trusty
Candidate: 1.11.2-0~trusty
Version table:
*** 1.11.2-0~trusty 0
500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
1.11.1-0~trusty 0
500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
1.11.0-0~trusty 0
500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
1.10.3-0~trusty 0
500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
1.10.2-0~trusty 0
500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
1.10.1-0~trusty 0
500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
1.10.0-0~trusty 0
500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
1.9.1-0~trusty 0
500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
1.9.0-0~trusty 0
500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
1.8.3-0~trusty 0
500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
1.8.2-0~trusty 0
500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
1.8.1-0~trusty 0
500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
1.8.0-0~trusty 0
500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
1.7.1-0~trusty 0
500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
1.7.0-0~trusty 0
500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
1.6.2-0~trusty 0
500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
1.6.1-0~trusty 0
500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
1.6.0-0~trusty 0
500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
1.5.0-0~trusty 0
500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
500が並んでますが大丈夫です。この数字はそのバージョンのインストール優先順位を表しているだけなので。詳細はman apt_preferences
で調べられます(下記)。
$ man apt_preferences
...中略...
priority 1
to the versions coming from archives which in their Release files
are marked as "NotAutomatic: yes" but not as "ButAutomaticUpgrades:
yes" like the Debian experimental archive.
priority 100
to the version that is already installed (if any) and to the
versions coming from archives which in their Release files are
marked as "NotAutomatic: yes" and "ButAutomaticUpgrades: yes" like
the Debian backports archive since squeeze-backports.
priority 500
to the versions that are not installed and do not belong to the
target release.
priority 990
to the versions that are not installed and belong to the target
release.
ここまで特に問題なければapt-get upgrade
でレポジトリから新しいパッケージが取れます。
$ sudo apt-get upgrade
次にAUFSを使うためのパッケージをインストールします。AUFSというのはレイヤー構造のファイルシステムです。これにより、レイヤーを重ねるイメージで一つのファイルシステムを構築できるようになります。
$ sudo apt-get update
$ sudo apt-get install linux-image-extra-$(uname -r)
続いてLinux向けのセキュリティモジュールであるAppArmorをインストールします。
$ sudo apt-get install apparmor
インストール
事前準備長かったですね。ようやくインストールです。
$ sudo apt-get update
$ sudo apt-get install docker-engine
あっけなくインストール完了。サービスも立ち上がっていると思います。試しにdocker version
と打ってみましょう。
$ docker version
Client:
Version: 1.11.2
API version: 1.23
Go version: go1.5.4
Git commit: b9f10c9
Built: Wed Jun 1 21:47:50 2016
OS/Arch: linux/amd64
グループ設定
インストール後に早速使ってみると以下のエラーが出ることがあります。
$ docker images
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
ユーザー権限の問題です。以下の設定をしてみてください。
$ sudo groupadd docker
$ sudo usermod -aG docker vagrant
vagrantユーザーでdockerを実行するなら上の書き方でOKです。それ以外のユーザーでdokcerを実行するならvagrant
の部分は適宜書き替えてください。
で、反映させるためにログアウト&ログイン。
$ exit
...
$ vagrant ssh
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
以上です。楽しいDocker Lifeを!
ついでに
dockerのコンテナの時間はホストマシンに依存します。 ですので、この時点でntpのインストール&設定もやっておきます。
$ sudo apt-get install ntp
$ sudo vi /etc/ntp.conf
...
# server 0.ubuntu.pool.ntp.org
# server 1.ubuntu.pool.ntp.org
# server 2.ubuntu.pool.ntp.org
# server 3.ubuntu.pool.ntp.org
# server ntp.ubuntu.com
server ntp1.jst.mfeed.ad.jp
server ntp2.jst.mfeed.ad.jp
server ntp3.jst.mfeed.ad.jp
restrict 10.0.0.0 mask 255.255.255.0 nomodify notrap
...
これでntpをリスタートします。
$ sudo service ntpd restart
さらにUTCからJSTに変更。
$ sudo dpkg-reconfigure tzdata
タイムゾーンはAsita/Tokyo
を選択して終了です。