close
プログラミング クラウド Microsoft Azure 情報処理資格 基本情報技術者 IT基礎 応用情報技術者 開発・設計方法 オブジェクト指向 内定者・新人研修 プログラミング基礎 アルゴリズム コンピュータ数学 内定者研修 新人研修 ヒューマンスキル プロジェクトマネジメント プレゼンテーション リーダーシップ 組織マネジメント ネゴシエーション ロジカルシンキング Java UI/UX HTTP JavaScript基礎 情報処理資格 ネットワークスペシャリスト ネットワーク インターネットルーティング応用 IPアドレス データベース応用 SQL応用 パフォーマンスチューニング データベース設計 ER図 概念設計(データベース) 論理設計(データベース) IT資格 Linux基礎 OS・システム基盤 セキュリティ TCP/IP OSI参照モデル データベースセキュリティ ファイアウォール 標的型攻撃 SQLインジェクション ネットワーク基本設計 CCNA Cisco プロジェクトマネジメント資格 情報処理資格プロジェクトマネージャ 情報処理安全確保支援士 人事給与 財務会計 管理会計 簿記 生産管理 在庫管理 ERP バランススコアカード 情報処理資格 ITアーキテクト 情報処理資格 ITストラテジスト 情報処理資格 ITサービスマネジメント 情報処理資格 システム監査 PMBOK® PMP® プロジェクト計画 WBS リスクコントロール ITIL ITサービスマネジメント 要求定義 要件定義 見積手法 ビジネスインダストリ 業種・業界知識 業務知識 提案力 ソフトウェアテスト基礎 情報処理資格 データベーススペシャリスト ハードウェア基礎 外部設計(基本設計) 内部設計(詳細設計) データベース基礎 SQL基礎 RDBMS 物理設計(データベース) C++ Ruby MVC基礎 Webアプリケーション開発 JavaEE Javaプログラミング応用 フレームワーク MVC応用 Spring フレームワーク ソフトウェアテスト応用 テスト手法 Junit スマートフォンアプリ開発 Androidアプリ開発 C# 基礎 C# 応用 負荷テスト Javaプログラミング基礎 ソフトウェアテスト コーチング メンタリング HTML/CSS サーバー構築 仮想化技術 KVS (NoSQL) アジャイル スクラム ファシリテーション C言語 ITパスポート JSTQB データサイエンス 単体テスト ユニットテスト キャリアアップ インターネットルーティング基礎 パケット解析 LAN構築 データベース データサイエンティスト トレンド 障害対応 インフラ監視 HTTP/2.0 コンピュータサイエンス VPN ネットワーク物理設計 データベース障害 JavaScript モダンJS (Modern JavaScript) 応用 MVS応用 バックアップ/リカバリ 分散処理 Hadoop Hive Python AI 深層学習(DeepLearning) CentOS Linux応用 Zabbix シェルスクリプト Infrastructure as Code Windowsサーバー基礎 内部設計 Docker DevOps Windowsサーバー応用 NginX chef Ainsible ロジカルライティング R テスト自動化 Jenkins Git 継続的インテグレーション (CI) バージョン管理 Vagrant 要求分析 Redmine 継続的インテグレーション(CI) 継続的デリバリー (CD) ヒューマンリソース管理 Web API マイクロサービス コミュニケーション 業務知識/業界知識 マーケティング 語学 AWS 法務 IoT ビジネスマナー OJT 業務効率化 表計算ソフト オフィスソフト コンプライアンス フロントエンド Subversion PHP 関数型プログラミング Laravel モダンJS (Modern JavaScript) 基礎 Android Studio 機械学習 iOSアプリ開発 ぷプログラミング React 次世代高度IT人材 共創 IPA Raspberry Pi Xamarin スクリプト言語 GoF CUI VBA 資格 ビジネス文書 jQuery 研修参加レポート マネジメント OSPF テーブル設計 アンガーマネジメント クリティカル・シンキング PDU 経営改善 Pマーク 問題解決技法 サイバー攻撃 エンジニア 参加してみた エンゲージメントマネジメント 労働関連法 新人育成 ネットワーク構築 情報セキュリティマネジメント デザインパターン リファクタリング マルチスレッドプログラミング ベンダーコントロール Modern JavaScript 冗長化 VLAN インフラエンジニア チームビルディング テストケース リーダブルコード セキュリティ入門 ネットワーク入門 Node.js npm gulp ビルドツール Python入門 冗長化入門 インフラ実機演習 プロジェクト管理 Active Directory ネットワーク管理 コンテナ 正規化理論 Haskell 品質管理 OpenStack シンギュラリティ DBA中級 プロトコル UX 基本設計 FinTech トラブルシューティング 並列処理 見える化 PMO ロジカルコミュニケーション Deep Learning 実機演習 インデックス設計 超上流工程 BGP Excel C-CENT Selenide プライベートクラウド アセンブラ コンピュータ基礎 工数見積 CCENT 法律知識 失敗から学ぶ プロジェクト失敗事例 PDCA プログラミング入門 非エンジニア向け 4Biz DNS セルフマネジメント 片付け術 サーバーダウン サーバー タイムマネジメント GO言語 プロダクトマネジメント プロダクトマネージャ LVS ロードバランサー 負荷分散 仮想通過 犯罪心理学 情報漏えい SEカレッジ導入事例 IT研修を聞いてみた 会社規模 (100~300名) IT研修制度を聞いてみた CentOS7 開発環境構築 数学力 数字力 財務 IT人材 UI Machine Learning Go言語 (golang) データマイニング 統計学 新人教育 やり直し数学 RDB つながる工場 モチベーション WebSocket WebWorker HTML5 CSS3 Bootstrap 微分・積分 システム設計 決断力 LAMP環境 トレ担 教育研修担当者向け ルーティング

比べて学ぶ仮想マシンとコンテナ 研修コースに参加してみた

今回参加した研修コースは 比べて学ぶ仮想マシンとコンテナ です。

SEカレッジでは過去にも仮想化に関するテーマのコースを開催していますが、今回はより突っ込んで、VMとくにハイパーバイザー型とコンテナ型がどう違うのか、特にコンテナの代名詞、Dockerを実際に使ってみることで、どう便利になっているのか体験できました !

 

  • 過去の同じテーマのコース

サーバー仮想化入門 研修コースに参加してみた

 

コンテナ、特にDockerが気になっている方には、これまでの違いはもちろん、ラクチンさを体験できるので、とてもオススメです!

では、どんな内容だったのかレポートします!

 

想定している受講者

  • Linuxの基本操作ができること
  • Windows PCの基本操作ができること
  • TCP/IPネットワークの基礎知識があること

 

受講目標

  • コンテナと仮想マシンの特徴と活用方法を理解する
  • Dockerの基本的な利用方法を習得する

 

講師紹介

インフラ ≒ 新谷 泰英さん です。

新谷 泰英

 

ちなみに、2018年11月の参加してみたレポートがインフラ中心になっているのは本当に “たまたま” です。。 SEカレッジではその他の分野ももちろん開催されています。

 

仮想化とコンテナ

 

  • コンテナ
    • 仮想化というより Isolation (隔離) と呼ばれる技術
    • コンテナはアプリケーションとして扱われる
      • ホストOSからみるとプロセスが動いているだけ
      • コンテナ同士は隔離されている
      • 異なるIPアドレスを持っているときもある (!)
    • 仮想化との違い
      • OSとハードウェアは共通
      • Windows, Linuxを同居できない
        • ただしカーネルを使っているので、シェルが異なるLinuxのディストリビューションは同居できる
        • 例えば、Ubuntu と CentOS を同居できる
  • VM (仮想化)
    • 物理マシンの遊休リソースを使って仮想マシンを作る技術

 

VMもコンテナも、システムユーザからすると同じような目的で使えるので、わかりにくいのですが、原理が全く違いますね。

ちなみに調べてみると、コンテナそのものはこのあと出てくるDockerより前にあり、過去にはDockerそのものもコンテナ実装の一つLXCを使っていました。詳しく知りたい方はぜひ御覧ください。 (コンテナ実装とはこれまた面白そうな課題ですね)

 

 

Docker

では、コンテナがこれだけ注目される引き金になった Docker について簡単に紹介頂きました。

 

  • コンテナを実行できるエンジン
  • 最近はLinuxだけでなくWindowsでWindowsコンテナも動かすことができる
  • コンテナ実行だけができる軽量なOS CoreOS で動いている
  • 様々なアプリケーションのイメージをダウンロードして使える
    • ちなみに Docker Hub も含めて Docker
  • ただし、新しい機能が追加されたり廃止されたりしているのでアップデートが大変

 

Docker 演習

というわけで、座学もそこそこにDockerを実際使ってみます。

 

Docker を使ってみましょう

  • VM を作ってそこにDockerを使う
    • 教室用PC (Windows) に VirtualBox でDockerのホスト (CentOS) を構築
  • インストールから起動まで
    • yum -y install docker
    • systemctl start docker
    • systemctl enable docker
  • コンテナを実行してみる
    • docker run hello-world // hello-world はイメージ名
      • イメージが無ければ自動的に Docker Hub からダウンロードされる
      • Docker Hub は GitHub のコンテナイメージ版
      • Hello!! from docker とコンソールに表示されました!
    • docker run -it ubuntu bash
      • docker run [イメージ名] [コマンド] -> コンテナ内のイメージを起動しコマンドまで実行
      • ps aux (ubuntu のコマンド) を実行してみる -> プロセスの実行履歴が表示された

 

検証などをやるときにサッと試せるので、とても便利ですね。

 

Docker上でWordPressを実行してみる

このあとの作業にあわせてコンテナのファイアウォールを設定したあと、もっとわかりやすくDockerのラクなところを体験するため、WordPressを動かしてみます。

  • docker run -d -p 8888:80 --name=wordpress tutum/wordpress
    • --name はコンテナに名前をつける
    • tutum/wordpress は [作成者名/イメージ名]
  • docker ps で起動を確認
  • ブラウザから http://(IPアドレス):8888 を動かす

 

WordPressが表示されました!!

 

本来であれば、WordPressを動かすにはWebサーバ(Apache), RDBMS(MySQL), PHPをそれぞれインストールして、さらに設定する必要があったのですが、めっちゃ簡単に立ち上がりました !! ラクチンすぎる。。。

ただし、本来は DB と Web サーバー は別々にコンテナを立ち上げて通信させるほうが一般的です。

 

Docker の基本操作

Dockerの超ラクチンなところを経験したところで、基本操作を解説いただきました。

  • イメージをダウンロードする
    • docker pull [イメージ名]
  • pull したイメージからコンテナを動かす
    • docker run [イメージ名]
  • 起動中のコンテナから抜ける
    • [ctrlキー]+[p] -> [ctrlキー]+[q] で dockerhost に戻る
  • 指定のコンテナに戻る
    • docker attach [コンテナID]
  • コンテナIDは docker ps で確認できる
  • シェルスクリプトも使える
    • docker rm $(docker ps -aq)
    • $(docker ps -aq) で起動中、停止中すべてのコンテナのIDを表示

 

なお例えば、DBを使った場合、実際にストアされたデータをホストの指定ディレクトリに保存することもでき、改めて起動すると、指定したディレクトリからリストアされます。

なるほど、コンテナとディスクストレージを切り離せるのですね。

 

Docker のネットワーク構成

では、冒頭にあったコンテナがIPアドレスを持てる、というところを解説です。

 

  • コンテナへの通信はホストを通して通信
    • docker run -p をしたときにアドレス変換している
  • コンテナ間はプライベートネットワークで繋がっているので直通信可能 (!)

 

今日の教室での環境のようにホストがVMであっても、VMのIPを使って通信できます。これで Docker on VM でも繋がります。

 

イメージの作成

最後にローカルで開発環境を構築したり,テスト環境を作ったりするときに使えるイメージをどのように作るのか、解説いただきました。

 

  • Docker file を作成する
    • vi dockerfile
    • 下のようなものを書く


このコマンドを実際に独自の Dockerfile に記述して、新谷さんがデモとして実行して、このコースは修了しました。

 

まとめ

このコースでは、特にハイパーバイザー型の仮想化とコンテナとの違いを学び、実際にDockerを使って、どのようにインフラ構築が出来るのか体験してみました。

体験できたことで、社内検証やテスト、開発環境を手早く用意するなど、色々と用途がイメージできるように思います。SEカレッジでもDocker Hub から pull して、自宅で教室と同じ環境をカンタンにサッと構築する、といったことは出来るかも知れないとイメージしました。(皆さんのニーズはありますかねぇ)

コンテナ Docker をそろそろ触ってみるか、という方にはとてもオススメです!

 

 


 

SEカレッジではこのコースを含め、 年間500講座をほぼ毎日開催中
これら500講座が 月額25000円~社員の方は受け放題 になります!!

無料見学、資料請求などSEカレッジへのお問い合わせはこちらから!!


SEカレッジについて

 

SEカレッジについて詳しく知りたいという方はこちらをご覧ください!!

SEカレッジ

特集・キャンペーン

よくある質問集

タグ一覧

研修参加レポート参加してみたセキュリティ基本情報技術者Linux基礎Javaプロジェクトマネジメントオブジェクト指向プログラミングプログラミング基礎PythonAISQL基礎コミュニケーションネットワーク仮想化技術テーブル設計ソフトウェアテストファイアウォールJavaScriptSQL応用マネジメントデータベースRDBMSネットワーク入門トレンド障害対応コーチングテスト自動化データサイエンスLinux応用DockerIoTデータベース設計コンテナCCNA情報処理資格インフラ実機演習jQueryパケット解析アルゴリズムC# 基礎Javaプログラミング応用PMBOK®要求定義資格マルチスレッドプログラミングビジネスマナーヒューマンスキルビジネス文書ER図シェルスクリプトアンガーマネジメントRaspberry PiエンジニアロジカルライティングプレゼンテーションLAN構築HTML/CSSOSPF新人研修単体テスト問題解決技法Javaプログラミング基礎非エンジニア向けアジャイルLVSUI/UXTCP/IPネットワーク構築データベース基礎JavaEECentOS簿記JavaScript基礎経営改善データベースセキュリティデザインパターンVLANPマーククラウドロジカルシンキングデータサイエンティストインフラエンジニア物理設計(データベース)SQLインジェクション正規化理論法律知識ベンダーコントロールソフトウェアテスト基礎業務効率化テストケースWebアプリケーション開発スクラムデータベース応用Cisco見える化ITIL財務UXマーケティング品質管理ITパスポート冗長化Active Directory機械学習セキュリティ入門内定者研修パフォーマンスチューニング応用情報技術者次世代高度IT人材サーバー構築ロジカルコミュニケーションデータベース障害工数見積リファクタリングZabbixプログラミング入門Deep Learning要件定義関数型プログラミングWBSDBA中級新人育成MVC基礎情報漏えいIPAIPアドレスインデックス設計サイバー攻撃プロトコルModern JavaScriptロードバランサープロジェクト管理OSI参照モデルWindowsサーバー基礎表計算ソフトJunit情報セキュリティマネジメントBGPプロジェクト失敗事例IT基礎PMOVPNITサービスマネジメントIT人材セルフマネジメントAWSCentOS7GoFExcelエンゲージメントマネジメントPDCA仮想通過PHPUI片付け術犯罪心理学インターネットルーティング応用CCENTMachine Learningインターネットルーティング基礎チームビルディングつながる工場教育研修担当者向けchefLaravelGo言語 (golang)並列処理Infrastructure as Codeリスクコントロールサーバーnpmテスト手法数字力概念設計(データベース)Bootstrapプライベートクラウド4Biz業務知識/業界知識SEカレッジ導入事例Haskellモチベーション超上流工程ルーティング失敗から学ぶモダンJS (Modern JavaScript) 基礎HTTPデータマイニングクリティカル・シンキングインフラ監視タイムマネジメントgulpIT資格微分・積分アセンブラDNSリーダブルコードコンピュータ数学会社規模 (100~300名)スクリプト言語WebSocket負荷分散統計学内部設計GO言語ビルドツールフロントエンドネゴシエーション基本設計システム設計コンピュータ基礎OpenStackWebWorker継続的インテグレーション (CI)ネットワーク管理やり直し数学プロダクトマネジメントPython入門C# 応用FinTechOS・システム基盤決断力フレームワークIT研修制度を聞いてみたシンギュラリティHTML5C-CENT労働関連法プロジェクト計画継続的インテグレーション(CI)共創RDBWindowsサーバー応用Microsoft Azureプロダクトマネージャ冗長化入門トラブルシューティングLAMP環境サーバーダウンNode.jsソフトウェアテスト応用開発環境構築CSS3Selenide

過去の記事