GRANVALLEY

ブログBlog

入門する前に門を叩く! コンテナ化を行うツール Dockerとは

公開日 2020年9月23日    最終更新日 2021年6月17日

本記事は、弊社AIコンサルティンググループが運営している「note」の「AIグループ@グランバレイ」で2019年7月に掲載された記事を一部修正を加え転載しております。

はじめに

今回の記事では、最近聞くことが増え一部の人には使うのが当たり前になりつつあるDocker(コンテナ化)について書かせていただきます。
Amazon Web Services や Microsoft Azure等のクラウドサービスにもあるコンテナ(化)とは何なのか。一緒に書かれることが多いDockerとは何なのかといった疑問に答えられれば良いなと考えています。
今回は”入門する前に門を叩く”ということで、本当にさわりの部分のみ記述いたします。
一度でもDockerを使ったことがある人にとっては無意味の記事かもしれませんが、だからこそ簡潔にまとめてみます。たまにネット等で聞くDocker(コンテナ化)を試してみたい。でも、中々最初の一歩が踏み出せないという方は是非読んでみてください。

Dockerとは

Dockerとは仮想化の1種であるコンテナ化を行うツールです。なので、Dockerとは何か?を説明するにはコンテナ化について理解する必要があります。

コンテナ化とは、仮想的に入れ物を作り、その中にアプリケーションを入れる技術です。この時に作る入れ物をコンテナと呼びます。

このコンテナを複数作成し、それぞれにアプリケーションを格納することで、アプリケーションの修正やミドルウェア環境の変更の影響を最小限にすることができます。このような特徴から、昨今耳に入るマイクロサービスはこのコンテナを使用する事が多々あるようです。

他に仮想化を行うツールとして、VirtualBoxやVMWare、Hyper-V等があります。これはホスト型、もしくはハイパーバイザー型と呼ばれる仮想化の手法で、Dockerとは違った手法です。一番大きな違いとしては、他の仮想化はOSの全ての機能・ファイル等を用意するのに比べ、コンテナはアプリケーションを動かすのに必要なものしか用意されません。必要最小限のものを使うことによって軽量化などを実現しています。

コンテナ・仮想化の違い

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

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

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

開発環境では上手く動いたのに、本番環境では上手く動かなかった。この様なことがたまに起こったりします。Dockerを使うことで、コンテナ部分だけではありますが、その様なことが起こらず動作も保証されます。

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

別のプロジェクトで作った機能を、新しいプロジェクトで再利用するといったことが容易にできます。これこそ「再現性がある」からこそできることです。

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

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

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

■ 記事の対象者

・Dockerに興味があるけど、一度も触れたことのない人

・Ubuntuでaptコマンドを使ったことのある人(Linuxのパッケージ管理ツールを使ったことがある人)

・Linux環境でファイルのパスを相対的に指定できる人

実作業

1) 下準備
デスクトップを右クリックでメニューを開き”Open Terminal”をクリック。

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

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

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

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

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

sudo docker build -t repo:blog .

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

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

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

補足・まとめ

実作業の「3) コンテナを作成する」という部分を少し補足させてください。これは正確にはコンテナを作成しているのではなく、コンテナイメージというものを作成しています。この”コンテナイメージ”というものをコンテナに入れて起動するというのが正確な流れになります。

最後までご覧いただきありがとうございました!


本記事は、弊社AIコンサルティンググループが運営している「note」内の「AIグループ@グランバレイ」の記事を一部修正を加え転載しております。
https://note.com/gvaiblog/n/n1b87d9900a04

※ その他の会社名、製品名は各社の登録商標または商標です。
※ 記事の内容は記事公開時点での情報です。閲覧頂いた時点では異なる可能性がございます。