いなみんSEブログ

田舎出身、上京SEの勉強日誌

Docker入門 ※ハンズオンあり

※スライドから転用です。

Docker入門 - HackMD

Dockerとは

Dockerはコンテナ型の仮想化環境を提供するオープンソースソフトウェアである
VMware製品などの完全仮想化を行うハイパーバイザ型製品と比べて、ディスク使用量は少なく、仮想環境 (インスタンス) 作成や起動は速く、性能劣化がほとんどないという利点を持つ。 ※Wikipediaより

いきなり製品紹介されても・・・

従来の基盤から考えてみよう

オンプレミスでの開発

  1. サーバーを調達
  2. OSのインストール・設定
  3. ミドルウェア等のインストール
  4. アプリケーションをデプロイ

冗長化する場合、

新しくサーバーを調達する必要がある

しかも、

1台ずつ同じ設定をしなければならない

仮想サーバーの場合

  1. OSのインストール・設定
  2. ミドルウェア等のインストール
  3. アプリケーションをデプロイ

冗長化する場合

1台サーバーがあればその中に複数台構築が可能
複製も楽に行える

※Docker公式の画像を拝借

オンプレ・仮想

共通の問題点

環境差異による障害

→検証環境では動いたのに本番では動かない

😈インストール漏れ
😈設定漏れ

そこで、😮

Docker使えば解決できる!!

Docker Logo

Dockerでできること

  • 検証環境の構成をそのまま本番へ展開
    →環境差異がなくなる

  • 環境をコードで管理
    →どの環境でも同じ手順でインストール・設定

つまり、

検証した環境をリリースできる!

インストール漏れもなくなる!

具体的な開発例

従来の場合

  1. アプリ開発
  2. サーバー構築・設定
  3. ミドルウェアの構築・設定
  4. アプリをデプロイ

Dockerを使用する場合

  1. アプリ開発、Dockerfileの作成
  2. サーバー構築・設定
  3. Dockerをインストール
  4. Docker上にコンテナ(アプリ)を展開

ミドルウェアの構築が不要に!!!
★環境差異がなくなる!!!

Dockerの開発環境

手軽に試したい場合

Play with Docker

インストールの手間がないため、手軽に試せる

https://labs.play-with-docker.com/

実際に試してみよう

アカウント作成・ログイン

アカウントがない場合は以下から作成

インスタンス作成

起動すると以下の画面が表示される

Docker上でNginxを使う

以下のコマンドを実行

$ docker run --name nginx-study -d -p 80:80 nginx

docker run nginx

説明

  • docker run ・・・コンテナの実行

  • --name ・・・コンテナに名前を付与

  • -d ・・・デーモン実行
  • -p ・・・ポートフォワーディング

起動を確認

$ docker ps

docker ps

画面表示確認

view nginx

たったこれだけ!!!

It works

コンテナの停止・削除

# コンテナ停止
$ docker stop nginx-study
# コンテナ削除
$ docker stop nginx-study

作成したHTMLを表示する

# サンプルHTMLを取得
$ git clone https://github.com/MasanoriIwakura/docker-nginx.git

# 実行
$ docker run --name nginx-study -d -p 80:80 \
-v ${PWD}/docker-nginx/html:/usr/share/nginx/html nginx

こんな感じで表示される

次回予告

Docker Composeを使って複数コンテナを連携してみよう!

例) PHPコンテナ と MySQLコンテナを連携