月間18,000PV達成! 収益は毎日発生中! 記事は毎日更新中! 今は農作業中のため東京にいるよ! ギランバレー症候群に関する情報を集めています

【必見】Docker入門!初心者が使い方をまとめてみた!

             
  • 2018.10.24
  • IT
【必見】Docker入門!初心者が使い方をまとめてみた!
Advertisement

 

あなたは、Dockerというものをご存知ですか?

・Dockerって聞いたことあるけど、よう分からん。。

・コンテナを使うやつっていう位しか知らん。

・便利なものっていう位しか知らん。

このように、Dockerについて詳しくない方も多いはずです。

 

僕も、Dockerを使ったことがなく、全くと言っていいほど知識がありませんでした。

勉強するのに良いサイトもなかったので、それなら自分で記事を書いちゃえということで色々とまとめてみました。

 

 

Dockerとは

Dockerとは、コンテナ型仮想化技術を実現するために実現するために実行される常駐アプリケーションと、それを操作するためのコマンドフロントインターフェースから成るプロダクトです。

 

Dockerは、アプリケーションのデプロイに特化しています。

 

 

Dockerの実行方法

Dockerは、「イメージ」「コンテナ」の2つの概念を持ちます。

・イメージは、OS・アプリケーションがセットとなっているテンプレのようなものです。

・コンテナは、イメージを元に実行される箱です。

つまり、イメージを作成し、コンテナを実行することで、様々な環境を構築できるということになります。

 

イメージは、Docker Hubというリポジトリに公開されているものも多いので、自分ですべてを作成する必要はありません。

 

 

Dockerのメリット

Dockerを使うのは良いですが、そもそもなぜ使うのかを理解しておく必要があります。

Dockerにはしっかりとしたメリットがあるので、ポイントを押さえておきましょう。

 

ミドルウェアをローカルにインストールする必要がない

Dockerは、OS・アプリケーションなどをコンテナという単位で扱うため、ローカルにあらゆるミドルウェアをインストールする手間が省けます

 

同一環境を構築することが容易

Dockerは容易に同一環境を構築することができます。つまり、開発環境を本番環境に複製することもできるということです。

Dockerを本番環境で使うというのは違和感があるかもしれませんが、最近流行った「ポケモンGo」も本番環境にDockerを使用しています。

 

軽量である

従来、仮想環境を構築するなら「Virtual Box」などの仮想化ソフトウェアを使用していました。

それぞれに良さがあるわけですが、Dockerは仮想化ソフトウェアを使用するよりも軽量という特徴があります

 

優れたポータビリティ性

Dockerは、優れたポータビリティ性を持ちます

OS・アプリケーションなどをコンテナという1単位として扱うので、別環境に同じ環境を構築するのも容易なわけです。

 

 

Dockerのインストール

Dockerを使用できる環境を構築します。

Docker for Windows/Macをインストールします。

■Docker for Windows/Macのインストール

URL:「https://store.docker.com/editions/community/docker-ce-desktop-windows」

 

僕の環境は、OSがWindows10 Proですので、今後はWindows10 Proを前提として話を進めていきます。

 

 

Advertisement

 

まずはDockerを使ってみよう!

何事もまずは触れてみる、ということで実際にDockerを使用してみましょう。

今から作成するものは、シェルを実行するだけのアプリケーションですが、これをDockerで再現してみます。

 

まずは、シェルを作成します。「Hello World」を出力するだけのシェルですね。

 

 

次に、Dockerfileを作成します。Dockerfileは「Dockerがどんなイメージを作成・実行するかを定義するファイル」です。

以下が、Dockerfileで使用するインストラクション(命令)の説明です。

インストラクション 概要
FROM ベース(コンテナのひな型)となるDockerイメージ(OS)を定義します。
COPY ホスト側から、Dockerコンテナ内へファイルをコピーします。
RUN Dockerコンテナ内で任意のコマンドを実行します。
CMD 出来上がったイメージをDockerコンテナとして実行する前に行われるコマンドを定義します。

 

 

シェルファイルとDockerfileを同一フォルダに配置し、コマンドを実行します。

Dockerイメージをビルドしています。

 

 

Dockerコンテナを実行します。

 

Hello, World!」とコンソール上に表示されればOKです。

 

 

Dockerのコマンド

Dockerには数多くのコマンドがあります。

ここでは良く使用するコマンドをご紹介します。

 

イメージのタグ付け

Dockerイメージの特定のバージョンにタグ付けを行います。

 

イメージの取得

DockerレジストリからDockerイメージをダウンロードします。

 

イメージの一覧

Dockerホストに保持されているイメージの一覧を表示します。

 

コンテナの作成と実行

Dockerイメージからコンテナを作成、実行するコマンドです。

 

コンテナの停止

Dockerコンテナを停止します。

 

コンテナの破棄

Dockerコンテナをディスクから完全に破棄します。

 

コンテナの一覧

Dockerコンテナの一覧を表示します。

 

実行中コンテナでのコマンド実行

Dockerコンテナの中で任意のコマンドを実行できます。

 

ファイルのコピー

コンテナ間、コンテナ・ホスト間でファイルをコピーします。

 

ヘルプ

Dockerのヘルプを表示します。

 

 

Docker Compose

「まずはDockerを使ってみよう!」では、Dockerを使用して単一アプリケーションを実行しました。

ただ、単一のアプリケーションで成り立つシステムはほとんど存在せず、複数のミドルウェアが連携してシステムは構築されます。

Docker Composeでは、コンテナ間での連携を可能としており、マルチコンテナとして実行することが可能となっています

 

Docker Composeのバージョン確認

Docker Composeのバージョンを確認します。

 

Docker Composeの実行

docker-compose.ymlを作成します。

今回はコマンドの勉強を行うだけとするので、echoコンテナが実行されるだけです。

 

 

docker-compose.ymlのあるフォルダでコマンドを実行します。

ここまでくれば、Docker Composeを利用したコンテナ実行は完了です。非常に簡単ですね。

 

 

Docker Swarm

Docker Swarm(スウォーム)とは、複数のDockerホストを束ねてクラスタ化するためのツールです。

僕の場合だと、ローカルPCにDocker for Windowsを入れているので単一ホストに単一Dockerという構成ですが、複数ホストを連携したい場合もあるはずです。

それを再現するためのツールが「Docker Swarm」ということになります。

 

Docker Swarmで再現するコンテナ

今回は以下の5つのコンテナを再現しますが、この5つのコンテナはDockerの中に5つのDockerが存在するという構成です。

これを、「Docker In Docker(dind)」と呼びます。

・registry

・manager

・worker01

・worker02

・worker03

 

 

docker-compose.ymlを作成します。

 

 

docker-compose.ymlのあるフォルダでコマンドを実行します。

 

 

managerコンテナ内でSwarmの初期化処理を行います。これにより、Swarmモードが有効になります。

実行すると、下記のようなトークンがコンソール上に表示されるので控えておきましょう。

SWMTKN-1-49dpjk322nhbu80edt1y8sf0i029piu0jj9kh7a505l4b8w2e9-65bondto26fgx15nrhsm2wlda 172.18.0.3:2377

 

 

woker01コンテナをSwarmクラスタに登録します。

work02、work03も同じようにコマンドを実行します。

 

これで初期設定は完了ですが、各コンテナが動いただけなので、次にイメージを落とし込んでいきます。

 

 

タグを指定し、イメージを作成します。

 

 

registryコンテナにイメージをプッシュします。

 

 

registryにプッシュされたイメージをworker01からプルします。

 

 

worker01内にあるイメージを確認します。

 

このように、Swarmクラスタを利用することで、複数のDockerホストを束ねてクラスタ化できます。

 

 

Advertisement

 

Docker Service

アプリケーションを構成する一部のコンテナを制御するための単位として、Serviceという概念があります。

 

 

Docker Serviceの作成はmanagerコンテナで行います。

 

 

Serviceの一覧表示は上記のコマンドで行います。

 

 

スケールで、該当サービスのコンテナ数を増減できます。今回はスケールを6に設定します。

 

 

Swarmクラスタ上で実行されているコンテナを確認します。

 

 

Serviceの破棄を行います。

 

 

Docker Stack

Stackは、複数のServiceをグルーピングした単位であり、アプリケーション全体の構成を定義します

 

 

ネットワークを作成します。

 

 

ch03-webapi.ymlを作成します。

 

 

managerコンテナ内にch03-webapi.ymlをコピーします。

 

 

Stackをデプロイします。

 

 

デプロイされたStackを確認します。

 

 

Stackでデプロイされたコンテナを確認します。

 

 

visualizer.ymlを作成します。

コンテナ群がSwarmクラスタ上のノードにどのように配置されているかを可視化するvisualizerというアプリケーションを使用するための設定です。

 

 

managerコンテナ内にvisualizer.ymlをコピーします。

 

 

Stackをデプロイします。

「http://localhost:9000/」にアクセスすると、visualizerを閲覧できます。

 

 

Stackを削除します。

 

 

Dockerで色々インストールしてみる

Dockerの良さを簡単に理解するために、色々とアプリケーションを使ってみましょう。

 

WordPressをインストール

WordPressをインストールしてみます。

 

mysqlコンテナを実行します。

 

Wordpressコンテナを実行します。

「http://localhost:8080/」にアクセスすると、Wordpressが表示されます。

 

 

おすすめ本

Dockerを深く理解したい方は、以下の書籍がおすすめです。

 

 

 

まとめ

Dockerを利用することで、今まで面倒だった環境構築が簡単になります。

それ以外にも、今回説明したようなメリットがたくさんあるため、ガンガン導入していくことをおススメします。

最近の技術を使用するには知識が必要ですが、本記事が何かしらの一助になれば幸いです。

日々技術力を磨いていきましょう!

Travelerを知らないの?