【Docker 入門編】Docker を使ってみよう!!

何の記事??

タイトルの通りですが、Docker を初めて使う人向けに導入からイメージの作成までを紹介したいと思います。

「Docker って何??」の疑問も解消し、同時に Docker を使ってみようかなと思える導入までを記事にしてみました。


Docker とは

結論先行で言うと・・・
どの Linux 環境でも同じように実行できるようにした軽量型コンテナ
です!!

・・・はて?って感じですよね。
平たく言うと、家を建てる時に普通だったら土地をさら地にしてその上で、家を建築していくと思います。
これをコンテナの考え方に適用すると、どこかの工場で同じ家を大量に建築しておきます。そして家を建てたい場所まで、工場から家の形で運び込み土地の上に乗っけるだけ!!これであれば、どんな土地であっても同じ家が簡単に建ちますよね?? (もちろん無理なのは承知の上での例えです笑)

このようにコンテナ技術を使用すると、すでに作られたものを自分の所にもってくるだけなので簡単に同じ環境を導入することができるわけですね。


kubernetes

それではコンテナ技術がどのような箇所で力を発揮しているかをみてみましょう。
kubernetes が代表格です。

kubernetes は、ポケモンGO のアーキテクチャで使用されていることで話題になりました。
どういう効果があるかというとアクセス数に合わせて処理するサーバーを仮想的に増やしたり減らしたりすることができるわけです!

何を行っているかと言うと、アクセス数の想定が想像つかない場合に kubernetes を使用しておけば、秒間100アクセスだったらサーバー3台とかで、秒間500アクセスだったらサーバー15台に勝手に増えたり減ったりしてくれるというわけです。

大量アクセスを恐れて、サーバー台数を最悪の事態に備えておく必要はないためサーバー代も適切にチューニングできるだけでなく、アクセス負荷でサーバーサイドが死ぬこともないわけです!!

素晴らしい!!

しかも、GCP の GKE を使えば割と簡単に kubernetes が使用できるので最近流行っています。

なぜコンテナの話で kubernetes を出したかと言うと、サーバーを増やす時にコンテナを使用しているからです。先ほどの説明の通り、同じ環境を簡単に導入します。平たく言うと、同じ家を一気に建てることでサーバーの台数を増やすことが簡単にできるわけですね。

コンテナが GKE の提供する冗長化をサポートしているということですね!!


Docker をいじってみよう

ubuntu に Docker をインストール

基本的には Docker の公式ページに記載されている内容を元に紹介していきます。

docs.docker.com

それでは早速 Docker をインストールしていきます。

sudo apt-get install docker.io

次にリンクを作成してあげます。この辺はどのシステムのインストール手順も定石ですね。

sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker

ここまでくれば Docker コマンドが使えるようになっていますので正しく設定できているか下記コマンドで確認してみましょう。

docker --version

きちんとバージョンが出てきていればOKです!!!

image の利用

次にイメージ(先の説明でいう「家」)を持ってきましょう。

image は Docker Hub というところから取得します。同じ CentOS でも公式が作成した CentOS のイメージとユーザーが作成した(ちょっと公式から変更が加えられた)CentOS があります。
自分の欲しい要件に合わせて選ぶことになります。今回は公式の CentOS を持ってきましょう。

hub.docker.com

下記コマンドでイメージを pull(持ってくる)します。

docker pull centos

それでは pull したイメージを確認するコマンドで、正常に取得できているかをみてみましょう。

$ docker images

REPOSITORY     TAG         IMAGE ID     CREATED      VIRTUAL SIZE 
    centos     latest     6ee24d16365c  8 weeks ago        198.6MB 

きちんとイメージが表示されますね。

コンテナの起動

それではとうとうコンテナを起動してみましょう! ここでは先ほどの出力結果の REPOSITORY を使用します。

先にコマンドの大枠を紹介します。

docker run レポジトリ名 コマンド(echo "hello world!"など)

レポジトリ名には先ほどの REPOSITORY を、コマンドにはコンテナ内で実行したコマンドを入力してください。それでは次のコマンドで実際に起動してみましょう。(-d オプションはバックグラウンドでの実行を意味します)

sudo docker run -d レポジトリ名 free -s 5

それでは本当に実行できているのか確認してみましょう。次のコマンドで STATUS が実行中になっていることを確認しましょう。

docker ps -a

ちなみに free コマンドの結果は、下記コマンドで確認することができます。

docker logs

コンテナの停止

それでは今起動中のコンテナの停止方法です。docker ps -a で返却されるコンテナIDを使用します。

docker kill コンテナID

これだけで停止は完了します。docker ps -a で STATUS が EXIT(0) になっていることを確認してみてください。

イメージの作成

特に難しいことはなく、今まで通り Docker コマンドを使ってイメージが作成できます。
下記コマンドの「任意/任意」となっている部分は、一般的に 「ユーザー名/特徴のある名前」となっています。

docker commit コンテナID 任意/任意

今回は、公開はしないため割愛しますが docker push コマンドを使えば Docker Hub に自分のイメージを公開することができます。


最後に

今回は Docker に触れてみるという題材でした。いまいち業務で使うなどの必要に迫られないと取り掛からない領域ですね。

ただコンテナ技術に魅了される人が多い理由も勉強してみればわかるかもしれません。

それではまた次回〜