はじめてのDocker

はじめてのDocker

デザイン開発部の大嶽です。 今日も路線変更で、Dockerネタに迫ってみたいと思います!

 

Dockerってなんぞや?

上司: ちょっとDockerって使えないか調べてみてよ。

部下: ああ、はいはい。

 

早速、グぐってみました。

コンテナ管理・・・・。

仮想化・・・・・。ホストOS・・コンテナ・・・

Infra….code…..

なんだかシステムの人じゃないと頭が痛くなりますね。

手短に書くと、OS上にdockerがあれば何処でも動く仮想環境(?)のようですね。なんだかJavaのVMみたいな感じですね。

VirtualPCと何が違う?と言われると長くなるので他の記事に任せておきましょう。

 

参考:

http://www.atmarkit.co.jp/ait/series/1511/

 

Dockerいれてみる

上司: なんか情報あつまった?

部下: ええ。

上司: じゃあ、デモ環境つくってみてよ?

部下: ああ、はいはい。

 

参考記事を一読した限りではLinux環境で動く仕組みのようで。

Windows,Mac版もあるようですが、インストールが必要なので見送り。今回もAWS環境に作ってみましょ-。

色々調べること小一時間・・・・・

 

 

これでインストールできるようですね。

root権限がないとコマンドが実行できないので、sudo su しておきます。

バージョンの確認。

 

Dockerで環境をつくってみる

インストールは無事完了したので、早速環境をつくってみることに。

色々調べること小一時間・・・・・

buildしてimage作って、runする?

どうやら次の3ステップで起動までできるようです。

  1. コンテナに対応したLinuxイメージを用意する
  2. Dockerfileを用意してイメージを作る
  3. 作成したイメージからコンテナを起動する

LinuxイメージはAWSからも提供されているようなので利用してみることに。

https://www.infoq.com/jp/news/2017/01/amazon-linux-container-image

Dockerfileを用意してbuildするとimageが出来上がるとのこと。

githubにミニマムな環境用のファイルが公開されているのでこれを使います。

https://github.com/aws/amazon-linux-docker-images

 

 

Dockerfileの置いてあるフォルダへ移動します。

 

作成したイメージを確認

 

イメージからコンテナを起動

 

「-it」はインタラクティブモードで起動するので、コンテナ上のbashを使用してる状態になります。

起動した状態を確認するには別のterminalから確認します。

 

 

起動状態はSTATUSの部分を確認します。Upであれば起動中。

コンテナは起動すると指定されたコマンドを実行して停止するようになっています。

bashからexitするとコンテナは停止します。

 

停止したコンテナは「-a」をつけると確認することができます。

 

https://hub.docker.com/_/amazonlinux/

イメージ自体は下記のコマンドでも取得できるようです。

 

Dockerでapache環境をつくってみる

上司: なんか情報あつまった?

部下: ええ。起動するところまでは確認できましたよ。

上司: じゃあ、Webサーバー環境つくってみてよ?

部下: ああ、はいはい。

 

とりあえず停止したコンテナを起動してみます。

そのままyumでapacheをインストールしてみることに。

AWSのyumリポジトリがそのまま使えるのでEC2を利用している場合は余り違いがないので割と楽です。

インストールされているようですね・・。

 

起動に必要な設定がないみたいですね・・。

 

とりあえずサービスとして起動できるようになりました。

別のterminalからapacheにアクセスしてみます。

ポートが空いてないみたいですね・・・・。

調べること数十分・・

どうやらコンテナを起動するときにポートの割当が必要みたいですね。

コンテナを起動してるホストのポートとマッピングする場合は80:80といった書き方で割当てます。

 

別のterminalからapacheにアクセスしてみます。

念のためホスト側に入っているapacheを停止しておきます。

htmlのレスポンスが返ってくる状態であれば正常です。

ブラウザからIPを指定してアクセスするとapacheのテストページが表示されます。

 

まとめ!?

部下: とりあえず例の物、できましたけど。

上司: ほぉ、いいんじゃない!?

部下:イメージかDockerfileを作ってしまえば他の環境に即構築できるので開発用途には向いてそうです。gitとかでソースを同期するように組んでおけばリリース環境としても使えそうですよ。 

上司: ああ、そうかい。コマンド操作が多くて大変だの-。イメージ作って利用手順書にまとめてみてよ。

部下: はいはい、わかりましたよ。

 

 

環境作るまでは、通常のサーバー環境を作る手順と差はないですが、Dockerfileに記述して必要なものをインストールしていくことができるので、コードとして残しておける点が大きなメリットかもしれませんね。

イメージとして残さなくても、dockerのホスト環境があれば同じ環境を即構築できるようになる点がVirtualPCやクラウドなどの仮想環境と扱い方が大きく違うみたいですね。

それでは、また-。


Previous: デザイン部初!MVP受賞社員にインタビュー! Next: 「経営者の条件」より開発部門管理についての思考 第一弾

© 2017 ALL CONNECT Inc. All Rights Reserved.