Dockerをとりあえずインストールしてみる

/

導入

普段の開発用の仮想環境としてもっぱらVagrantVirtualBoxを使っているのですが、本番環境へのデプロイが簡単になるらしいという事でDockerの存在も気になっていました。

ただ興味はあったもののDockerは独自の用語などが多く本屋で関連書籍をパラパラめくってみてもいまいち仕組みがわからずに手が出なかったのですが、習うより慣れろの精神でとりあえずインストールしてコンテナの作成までを実行してみました。

Docker

DockerはWebアプリケーションなどを実装するのに必要なコードやライブラリ、ソフトウェアを一括して管理・デプロイしてくれるオープンソースのソフトウェアです。
Dockerでは仮想化によってアプリケーション毎にプロセスを独立させていますが、仮想マシンがOS単位で仮想化を行うのに対しコンテナと呼ばれるより小規模な単位で仮想化を行う事でリソースを小さくし、プロセスの起動時間をより短縮出来るという特徴があります。
https://www.docker.com/

実行環境

ubuntu16.04LTS

インストール

Dockerをインストールするにあたって参照できるドキュメントとしてDockerのサイトにubuntuへのインストールの項目があるのですが、このページに従ったインストールの方法ではリポジトリの追加など実行しなければならない手順が多く、ページが英語で書かれているのもあってそれなりの手間と難易度なので今回は以下のスクリプトを利用したインストール方法を実行しました。

Example: Install Docker on Ubuntu Linux

必要な環境

LinuxでDockerを利用するにはカーネルが64bitかつバージョンが3.10以上である必要があります。
参照: https://docs.docker.com/engine/installation/linux/ubuntulinux/

#カーネルのバージョンの確認
$ uname -r

4.4.0-38-generic

Dockerのサイトからインストール用のスクリプトを入手するのにcurlが必要なので、もし無ければインストールしておきます。

#curlの確認
$which curl
/usr/bin/curl

#curlが無ければインストールを実行
$ sudo apt-get update
$ sudo apt-get install curl

スクリプトの実行

準備が出来たらDockerのサイトからコードを入手しスクリプトとして実行します。

$ curl -fsSL https://get.docker.com/ | sh

スクリプトが無事に実行されればDockerがインストールされます。

グループの追加

インストール済むとインストール完了のメッセージの後にrootではないユーザーでDockerを実行する場合にはグループにdockerグループを追加する必要があるというメッセージが表示されます。
コマンドの実行際にsudoをつければDockerの実行自体は可能ですが一般ユーザーでそのままDockerを利用した場合にはグループの追加を実行します。

$ sudo usermod -aG docker [username]
$ su [username]

表示されたメッセージではグループを追加した後に設定を反映させるためにターミナルを開き直せとあったのですが、上手くいかなかったので元々のユーザーを切り替え直しています。
とりあえずこれでコマンドの実行は出来るようになったのですが、当初僕の環境ではターミナルを開き直すたびに再度ユーザーの切り替えが必要でした。再起動をしたあとはユーザーの切り替えをせずともDockerを実行出来るようになったので、上手く実行出来ない場合にはマシンの再起動をしてしまったほうが手っ取り早いかもしれません。

$ docker --version
Docker version 1.12.2, build bb80604

Dockerを実行する

インストールは出来ましたが、Dockerに関しては右も左も分からないで次はどうしようかと思っていたら下記のページにインストール確認用のhello-worldというDockerイメージが用意されているとあったのでこれを実行してみました。
イメージとはDockerで実行するコンテナの設定などが記載されたファイルで、これを元に仮想環境であるコンテナが起動されるようです。
なお実行の際にDockerのデーモンが起動されていない場合エラーが発生するので、もし起動していない場合にはあらかじめデーモンの起動を実行しておきます。

#デーモンの起動
$ sudo systemctl start docker

https://docs.docker.com/engine/getstarted/step_one/

$ docker run hello-world

hello-worldイメージが実行されるとHello from Docker!の文字とともに、実行されたプロセスに関するメッセージが表示されます。

表示されるメッセージの詳しい内容は上のリンク先にもあるのでそちらで確認出来ますが、メッセージによると上記のコマンドを実行することでDocker Hubというイメージのデータベースからhello-worldイメージがダウンロードされ、それを元にコンテナが起動されることでメッセージの出力が実行されたという事です。

メッセージの表示だけでは仮想環境上での処理によってメッセージの出力が実行されたという実感が湧きづらいのですが、Dockerのプロセスを確認をしてみるとコンテナが起動しているのが確認出来ます。

#dockerプロセス一覧の表示
$ docker ps -a

プロセス確認のコマンドを実行すると現在起動されているコンテナの名前とIDが解るので、必要のなくなったコンテナは停止・破棄する事が出来ます。

#コンテナの停止
$ docker stop [container id/name]
#コンテナの破棄
$ docker rm [container id/name]

コンテナの破棄の実行後にはプロセス一覧にコンテナが表示されなくなったので、Dockerの一連の動作確認が出来ました。

あとがき

以前Dockerが話題になった時にも試しに使ってみようと思いドキュメント見たところインストールの手順が面倒に感じたので一旦敬遠してしまっていましたが、今回もっと簡単にインストール出来る方法があったので再度挑戦してコンテナの作成までを行ってみました。

まだインストールして起動しただけなのでわからない事だらけですが、OS単位ではなくアプリケーション毎の仮想化というのが自分の普段の仮想環境の使い方に合っているのでこれから色々と試してみたいと思います。