入門する前に門を叩く! -コンテナ化を行うツール。Dockerを触ってみた#Granvalley


1. はじめに

 はじめまして。懸命にビール腹と技術力を育てているグランバレイのさとぽよです。当ノートにアクセスしていただきありがとうございます
 今回の記事では、最近聞くことが増えてきて一部の人には使うのが当たり前だよね。とすら言われるDocker(コンテナ化)について書かせていただきたいと思います
 AWSやAzure等のクラウドサービスにもあるコンテナ(化)とは何なのか。一緒に書かれることが多いDockerとは何なのかといった疑問に答えられれば良いなと考えています。
 今回は"入門する前に門を叩く"ということで、本当にさわりの部分しか書きません。一度でもDockerを使ったことがある人にとっては意味のない記事になっています。
 しかし、だからこそ簡潔に書きたいと思っています。たまにネット等で聞くDocker(コンテナ化)を試してみたい。でも、中々最初の一歩が踏み出せないという方は是非読んでみてください。

2. Dockerとは

Dockerとは仮想化の1種であるコンテナ化を行うツールです。なので、Dockerとは何か?を説明するにはコンテナ化について説明する必要があります。
 コンテナ化とは、仮想的に入れ物を作り、その中にアプリケーションを入れる技術です。この時に作る入れ物をコンテナと呼びます。
このコンテナを複数作成し、それぞれにアプリケーションを格納することで、アプリケーションの修正やミドルウェア環境の変更の影響を最小限にすることができます。このような特徴から、昨今耳に入るマイクロサービスはこのコンテナを使用する事が多々あるようです。
 他に仮想化を行うツールとして、VirtualBoxやVMWare、Hyper-V等があります。これはホスト型、もしくはハイパーバイザー型と呼ばれる仮想化の手法で、Dockerとは違った手法です。一番大きな違いとしては、他の仮想化はOSの全ての機能・ファイル等を用意するのに比べ、コンテナはアプリケーションを動かすのに必要なものしか用意されません。必要最小限のものを使うことによって軽量化などを実現しています。


3. 何でDocker(コンテナ)を使うの?

 コンテナを使うメリットについては主に以下が挙げられます。

■どの環境でも同じように動く(再現性がある)

 開発環境では上手く動いたのに、本番環境では上手く動かなかった。なんてことがたまに起こります。コンテナ部分だけではありますが、動作は保証されています。

■作った機能を使いまわすことができる

 別のプロジェクトで作った機能を、新しいプロジェクトで使用するといったことが簡単にできます。上記で書いた再現性があるからこそできることです。

 

4. 前提環境・この記事の対象者

今回紹介する作業を行った時の環境です。この環境を扱える人が対象者になります。

■作業環境                               OS:Ubuntu 64bit  Ver 16.04                           dockerのVer:18.05.5                         カーネルのVer: 4.8.0-36-generic (uname -r コマンドで確認可能)

■ 記事の対象者                             ・Dockerに興味があるけど、一度も触れたことのない人             ・Ubuntuでaptコマンドを使ったことのある人(Linuxのパッケージ管理ツールを使ったことがある人)                               ・Linux環境でファイルのパスを相対的に指定できる人

5. 実作業

 この記事で書く作業手順の最終目的は"nginxの環境をrepo:blogという名前のコンテナで作成し、TOPページにアクセスする"です。よろしくお願いします 。

・下準備

デスクトップを右クリックでメニューを開き"Open Terminal"をクリック。

sudo apt-get install docker.io (そこそこ待ち時間があります)
cd ~
mkdir working_docker
cd working_docker

下準備はここまでです。やったことを簡単に書きますと、dockerをインストールしたこと。ホームディレクトリの直下に作業用のディレクトリを作成・移動したことの2点です。

・必要なファイルを用意する

gedit Dockerfile (テキストエディタが開く)
~~~以下テキストエディタに入力~~~
FROM nginx
CMD ["nginx", "-g", "daemon off;"]

今回の作業に必要なファイルはDockerfile一つだけです。作成したファイルを下準備で用意したディレクトリの中に入れるよう注意してください。

・コンテナを作成する

sudo docker build -t repo:blog .

コンテナイメージと呼ばれるものを作成します。上記の"repo:blog"は「:」で区切られた文字列であれば基本的に自由です。よくあるミスとして「:」の周囲にスペースを入れてしまうことがありますが、それはアウトです。また、最後に「.」をつけていますが、記入ミスなどではないので、忘れずにつけてください(これはDockerfileのパスです)。

・コンテナを起動する

sudo docker run -d -p 8080:80 repo:blog

作成したコンテナ(イメージ)を起動します。もし、コンテナイメージを作成するときにrepo:blogを変えたら、それに合わせて起動時も書き直してください。

・ブラウザでアクセスする

任意のブラウザを起動し、URLにlocalhost:8080と入力してください。nginxのTOP画面が表示されたら完了です。お疲れ様でした。

6. 補足・まとめ

 上記の"コンテナを作成する"という部分を少し補足させてください。これは正確にはコンテナを作成しているのではなく、コンテナイメージというものを作成しています。この"コンテナイメージ"というものをコンテナに入れて起動するというのが正確な流れになります。下記に参考記事を挙げましたので、もし、このブログを読んで興味が出たという方は是非読んでみてください。                                何かこの記事について質問がある。もしくはこの"入門する前に門を叩く"を別のテーマで書いて欲しいという方は是非当アカウントをフォローの上、コメントを書いてください。
当記事をご覧になっていただき、ありがとうございました。

7. 参考記事

https://student-engineer.net/docker-image/


この記事が気に入ったらサポートをしてみませんか?