はじめての Docker
「Docker エキスパート養成読本」が出版されました。約 100 ページ程度で読みやすく、それでいて必要な情報はしっかり網羅されています。
今回は改めて docker の基本的な操作方法をまとめてみました。が、この記事を読む時間があれば「Docker エキスパート養成読本」を熟読することをお勧めします!
docker のインストール
CentOS7 の場合
通常であれば yum でインストールします。
| $ sudo yum update
$ yum search docker
$ sudo yum install -y docker
|
現時点(2015/06/22)では 1.6.0 がインストールされるようです。
1
2
3
4
5
6
7
8
9
10
11
12
13
14 | $ yum info docker
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* base: www.ftp.ne.jp
* extras: www.ftp.ne.jp
* updates: www.ftp.ne.jp
利用可能なパッケージ
名前 : docker
アーキテクチャー : x86_64
バージョン : 1.6.0
リリース : 11.0.1.el7.centos
・
・
・
|
Docker 社が提供している rpm からインストールすることで、最新の docker を利用することが出来ます。今回はこちらの手法でインストールしました。
| $ curl -O -sSL https://get.docker.com/rpm/1.7.0/centos-7/RPMS/x86_64/docker-engine-1.7.0-1.el7.centos.x86_64.rpm
$ sudo yum localinstall --nogpgcheck docker-engine-1.7.0-1.el7.centos.x86_64.rpm
|
docker を起動します。
| $ rpm -ql docker-engine | grep systemd
/usr/lib/systemd/system/docker.service
/usr/lib/systemd/system/docker.socket
$ sudo systemctl start docker.service
|
自動起動の設定も実施しておきます。
| $ sudo systemctl enable docker.service
|
systemctl status を実行することで「起動中か?否か?」「自動起動設定はされているか?否か?」を確認することが出来ます。「Loaded」行の一番右側の表示は自動起動を意味します(enabled なら自動起動する、disabled なら自動起動しない)。「Active」行は起動中か、否かを意味します。
| $ sudo systemctl status docker.service
docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled)
Active: active (running) since 月 2015-06-22 23:31:28 JST; 4min 6s ago
Docs: https://docs.docker.com
Main PID: 10672 (docker)
CGroup: /system.slice/docker.service
└─10672 /usr/bin/docker -d -H fd://
|
Ubuntu 14.04.2 LTS の場合
通常であれば apt-get でインストールします。
| $ sudo apt-get update
$ apt-cache search docker.io
$ sudo apt-get -y install docker.io
|
現時点(2015/06/22)では 1.0.1 がインストールされるようです。かなり古いです。
1
2
3
4
5
6
7
8
9
10
11
12 | $ apt-cache show docker.io
Package: docker.io
Priority: optional
Section: universe/admin
Installed-Size: 24103
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Paul Tagliamonte <paultag@debian.org>
Architecture: amd64
Version: 1.0.1~dfsg1-0ubuntu1~ubuntu0.14.04.1
・
・
・
|
Docker 社のレポジトリから直接、docker をインストールすることで Ubuntu 環境でも最新の docker を利用することが出来ます。今回はこちらの手法でインストールしました。
| $ curl -sSL https://get.docker.com/ubuntu/ | sudo sh
$ dpkg -l lxc-docker
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-================-=============-=============-=====================================
ii lxc-docker 1.7.0 amd64 Linux container runtime
|
Ubuntu 環境の場合、インストーラによって /etc/init/docker.info が作成されており、インストール直後の状態で既に docker が自動起動するよう設定されていました。
docker グループへのユーザ追加
docker の操作は主に docker コマンドで実施します。しかし通常、docker コマンドは root ユーザか、または docker グループに所属するユーザしか実行出来ません。Create a Docker groupに以下の記載があります。
The docker daemon binds to a Unix socket instead of a TCP port. By default that Unix socket is owned by the user root and other users can access it with sudo. For this reason, docker daemon always runs as the root user.
To avoid having to use sudo when you use the docker command, create a Unix group called docker and add users to it. When the docker daemon starts, it makes the ownership of the Unix socket read/writable by the docker group.
そこで、docker 操作用ユーザを docker グループに追加します。
| sudo gpasswd -a $USER docker
exit
( 再ログイン )
|
これで sudo を利用せずに docker コマンドを実行出来るようになりました。
Docker のライフサイクル
Docker のライフサイクルを図示すると、概ね以下のようになります。
イメージのダウンロード
Docker 用のイメージは Docker 社が運用する Docker Hub からダウンロードしたり、自作イメージをアップロードしたり出来ます。ここでは Docker Hub から Ubuntu のイメージをダウンロードしてみます。まずは docker search コマンドで "ubuntu" というキーワードに一致するイメージを Docker Hub から検索してみます。
1
2
3
4
5
6
7
8
9
10
11
12 | $ docker search ubuntu
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
ubuntu Ubuntu is a Debian-based Linux operating s... 1835 [OK]
ubuntu-upstart Upstart is an event-based replacement for ... 26 [OK]
tutum/ubuntu Ubuntu image with SSH access. For the root... 25 [OK]
torusware/speedus-ubuntu Always updated official Ubuntu docker imag... 25 [OK]
ubuntu-debootstrap debootstrap --variant=minbase --components... 10 [OK]
rastasheep/ubuntu-sshd Dockerized SSH service, built on top of of... 4 [OK]
maxexcloo/ubuntu Docker base image built on Ubuntu with Sup... 2 [OK]
nuagebec/ubuntu Simple always updated Ubuntu docker images... 2 [OK]
nimmis/ubuntu This is a docker images different LTS vers... 1 [OK]
alsanium/ubuntu Ubuntu Core image for Docker 1 [OK]
|
実際にイメージをダウンロードしてみます。docker pull コマンドを使います。「リポジトリ名:タグ」という指定の仕方をしますが、タグ部分を省略すると「latest」を指定したのと同じ効果になります。但し、常に明示的にタグを指定することが推奨だそうです。
| $ docker pull ubuntu:14.04.2
|
ダウンロード済みのイメージは docker images コマンドで確認出来ます。
| $ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu 14.04.2 6d4946999d4f 10 days ago 188.3 MB
|
コンテナの起動
docker run コマンドで指定したイメージからコンテナを作成し、起動出来ます。-it オプションを指定した場合はフォアグラウンドで、-d オプションを指定した場合はバックグラウンドでコンテナが起動します。
| $ docker run -it ubuntu:14.04.2 /bin/bash
root@d68ea339bb87:/#
|