<style> h2 { text-align:left } </style> # Docker入門 ![Docker Logo](https://i.imgur.com/PsoELx6.png) Presented by MasanoriIwakura --- ## 自己紹介 iwamasa <img src="https://avatars0.githubusercontent.com/u/28638961?s=400&u=009a8e698165d1f983669457dc93db3eb46a5b9d&v=4" widh="100" height="100"/> - 自称サーバーサイド〜ミドルエンジニア - インフラやフロントエンドも少し触ります - マイブームはDocker、DevOps、AWS - 好きな声優:<font color="#FE9A2E">伊波杏樹🍊</font> --- ## Dockerとは Dockerはコンテナ型の仮想化環境を提供するオープンソースソフトウェアである VMware製品などの完全仮想化を行うハイパーバイザ型製品と比べて、ディスク使用量は少なく、仮想環境 (インスタンス) 作成や起動は速く、性能劣化がほとんどないという利点を持つ。 ※Wikipediaより --- # いきなり製品紹介 # されても・・・ --- ## 従来の基盤から考えてみよう --- ## オンプレミスでの開発 1. サーバーを調達 2. OSのインストール・設定 3. ミドルウェア等のインストール 4. アプリケーションをデプロイ --- ## 冗長化する場合、 <img src="https://i.imgur.com/GuFcHO4.png"/> --- ### 新しくサーバーを調達する必要がある <img src="https://i.imgur.com/GuFcHO4.png"/> <img src="https://i.imgur.com/GuFcHO4.png"/> --- ## しかも、 1台ずつ同じ設定をしなければならない <img src="https://i.imgur.com/OEh6Mmf.png"/> <img src="https://i.imgur.com/OEh6Mmf.png"/> --- ## 仮想サーバーの場合 <img width="30%" height="30%" src="https://i.imgur.com/yRND6rj.png"/> <img width="25%" height="25%" src="https://i.imgur.com/CeVLqyl.jpg"/> 1. OSのインストール・設定 2. ミドルウェア等のインストール 3. アプリケーションをデプロイ --- ## 冗長化する場合 1台サーバーがあればその中に複数台構築が可能 複製も楽に行える <img width="40%" height="40%" src="https://i.imgur.com/HsCHgMF.png"/> <font size="-1">※Docker公式の画像を拝借</font> --- # オンプレ・仮想 # 共通の問題点 --- ## 環境差異による障害 →検証環境では動いたのに本番では動かない <div style="text-align:left; margin-top:1em;"> 😈インストール漏れ <br> 😈設定漏れ </div> --- # そこで、 --- ## Docker使えば解決できる!! ![Docker Logo](https://i.imgur.com/PsoELx6.png) --- ## Dockerでできること - 検証環境の構成をそのまま本番へ展開 →環境差異がなくなる - 環境をコードで管理 →どの環境でも同じ手順でインストール・設定 --- # つまり、 --- ### 検証した環境をリリースできる! ### インストール漏れもなくなる! ![](https://i.imgur.com/muQFVfI.png) --- # 具体的な開発例 --- ## 従来の場合 1. アプリ開発 2. サーバー構築・設定 3. ミドルウェアの構築・設定 4. アプリをデプロイ --- ## Dockerを使用する場合 1. アプリ開発、Dockerfileの作成 2. サーバー構築・設定 3. Dockerをインストール 4. Docker上にコンテナ(アプリ)を展開 ★ミドルウェアの構築が不要に!!! ★環境差異がなくなる!!! --- ## Dockerの開発環境 - Docker for Windows - Docker for Mac - WSL (Windows Subsystem for Linux) --- ## 手軽に試したい場合 - Play with Docker --- ## Play with Docker インストールの手間がないため、手軽に試せる https://labs.play-with-docker.com/ --- # 実際に試してみよう --- アカウント作成・ログイン <img width="80%" height="80%" src="https://i.imgur.com/araVrzk.png"/> --- アカウントがない場合は以下から作成 <img width="50%" height="50%" src="https://i.imgur.com/Pek9vtR.png"/> --- インスタンス作成 <img width="100%" height="100%" src="https://i.imgur.com/Jc4vF5f.png"/> --- 起動すると以下の画面が表示される ![](https://i.imgur.com/sBzvbMJ.png) --- ## Docker上でNginxを使う 以下のコマンドを実行 ```bash $ docker run --name nginx-study -d -p 80:80 nginx ``` ![docker run nginx](https://i.imgur.com/RAYa4Hc.png) --- ## 説明 - docker run ・・・コンテナの実行 - --name ・・・コンテナに名前を付与 - -d ・・・デーモン実行 - -p ・・・ポートフォワーディング --- ## 起動を確認 ```bash $ docker ps ``` ![docker ps](https://i.imgur.com/hdObEGq.png) --- ## 画面表示確認 ![view nginx](https://i.imgur.com/GnJo2pH.png) --- たったこれだけ!!! ![It works](https://i.imgur.com/T4doknz.png) --- コンテナの停止・削除 ```bash # コンテナ停止 $ docker stop nginx-study # コンテナ削除 $ docker stop nginx-study ``` --- ## 作成したHTMLを表示する ```bash # サンプル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 ``` - -v ・・・ホストのディレクトリとコンテナのディレクトリを紐付ける --- こんな感じで表示される ![](https://i.imgur.com/XhIJrvK.png) --- ## 次回予告 Docker Composeを使って複数コンテナを連携してみよう! 例) PHPコンテナ と MySQLコンテナを連携 --- ### ご静聴ありがとうございました。 <!-- 話すことメモ # 自己紹介 # 従来のインフラ構成 - オンプレ - 仮想 # Docker(コンテナ)について # 従来の問題点 # Dockerで解決できること # 開発例 # ハンズオン - 開発環境 - Docker for Mac - Docker for Windows - WSL - Play with Docker - 単一コンテナの実行(Nginx) - Dockerfileの作成・実行 - Docker Composeについて - 本番環境での使用例 - Kubernetesについて - クラウド(AWS)での使用 -->
{"metaMigratedAt":"2023-06-14T21:39:46.221Z","metaMigratedFrom":"Content","title":"Docker入門","breaks":true,"contributors":"[{\"id\":\"46a06160-0a53-4802-bc04-b5cdc3540e7e\",\"add\":4684,\"del\":782}]"}
    809 views