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環境 トレ担 教育研修担当者向け ルーティング Linux入門 図解術 目標設定 試験対策 インタビュー技法 Vue.js ブロックチェーン 会社規模 (~50名) DHCP 仕掛け学 BSC 財務諸表 自己分析 RIP スタティックルート バッファオーバーフロー DoS攻撃 システム開発 会社規模 (~99名) Wireshark パケットキャプチャ 管理職研修 部下育成 ワークあり 文章力 情報システム部門向け プロジェクトリーダー プロジェクトマネージャ

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

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

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カレッジ

特集・キャンペーン

よくある質問集

タグ一覧

参加してみた研修参加レポートセキュリティJavaLinux基礎プロジェクトマネジメント基本情報技術者Pythonオブジェクト指向プログラミングコミュニケーションSQL基礎ネットワークプログラミング基礎AIテーブル設計マネジメント仮想化技術SQL応用JavaScriptファイアウォールデータベースIoTソフトウェアテストビジネス文書ヒューマンスキルjQueryC# 基礎Linux応用トレンドPMBOK®ネットワーク入門RDBMSDocker障害対応ビジネスマナーパケット解析コンテナデータベース設計コーチングデータサイエンスエンジニアテスト自動化資格シェルスクリプト問題解決技法マルチスレッドプログラミングデータベース基礎情報処理資格要求定義ER図アルゴリズムインフラ実機演習CCNAJavaプログラミング応用プレゼンテーション単体テストJavaプログラミング基礎JavaScript基礎OSPF新人研修PマークアンガーマネジメントSQLインジェクションLAN構築Raspberry PiロジカルライティングHTML/CSSIT基礎財務データサイエンティスト物理設計(データベース)経営改善簿記データベースセキュリティデザインパターンITILクラウドVLANアジャイルパフォーマンスチューニングロジカルコミュニケーションリファクタリング工数見積ロジカルシンキングインフラエンジニア新人育成非エンジニア向けJavaEEサイバー攻撃ベンダーコントロールLVS教育研修担当者向けUI/UXTCP/IPネットワーク構築CentOSC# 応用UX品質管理冗長化内定者研修Active Directory次世代高度IT人材統計学データベース障害応用情報技術者セキュリティ入門Zabbixソフトウェアテスト基礎関数型プログラミングIT研修制度を聞いてみたOS・システム基盤プログラミング入門Webアプリケーション開発スクラムDeep Learning業務効率化DBA中級正規化理論ITパスポートインデックス設計法律知識要件定義テストケースマーケティングSEカレッジ導入事例WBSModern JavaScript機械学習サーバー構築データベース応用見える化CiscoHTTPOSI参照モデル情報セキュリティマネジメントAWSフレームワークGoFBGPプロジェクト失敗事例PMOPHPIT人材セルフマネジメントCentOS7インターネットルーティング基礎Excelエンゲージメントマネジメント図解術PDCAMVC基礎仮想通過Python入門UI決断力片付け術HTML5ITサービスマネジメント犯罪心理学IPACCENTプロダクトマネージャインターネットルーティング応用Machine LearningJunitCSS3情報漏えいIPアドレスクリティカル・シンキングHTTP/2.0表計算ソフトプロトコルWindowsサーバー基礎ルーティングロードバランサープロジェクト管理VPN内部設計見積手法バッファオーバーフロータイムマネジメントgulpフロントエンド微分・積分アセンブラVue.jsDNSリーダブルコードリーダーシップ会社規模 (100~300名)IT資格WebSocketリスクコントロールLinux入門継続的インテグレーション (CI)情報システム部門向け負荷分散ビジネスインダストリDoS攻撃GO言語ビルドツール基本設計システム設計コンピュータ基礎会社規模 (~50名)ソフトウェアテスト応用ネゴシエーションOpenStackWebWorker継続的インテグレーション(CI)プロジェクトリーダーネットワーク管理共創やり直し数学Windowsサーバー応用システム開発プロダクトマネジメントFinTech財務諸表テスト手法シンギュラリティC-CENT労働関連法Microsoft Azure目標設定プロジェクトマネージャRDBPMP®chef会社規模 (~99名)冗長化入門Laravelトラブルシューティングインフラ監視LAMP環境RIPサーバーダウンNode.js開発環境構築SelenideInfrastructure as Code試験対策チームビルディング業務知識/業界知識つながる工場プロジェクト計画WiresharkモダンJS (Modern JavaScript) 基礎Go言語 (golang)並列処理スタティックルートサーバーnpm数字力Bootstrapプライベートクラウドインタビュー技法4BizHaskellスクリプト言語概念設計(データベース)モチベーション超上流工程失敗から学ぶコンピュータ数学パケットキャプチャデータマイニングPDU

過去の記事