Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Oracle対応アプリケーションのDockerize事始め

2,786 views

Published on

2017年11月17日に開催されたJPOUG in 15 minutes #6のセッション「Oracle対応アプリケーションのDockernize事始め」のスライドです。
http://www.jpoug.org/2017/09/20/in15m6

Published in: Software
  • Be the first to comment

Oracle対応アプリケーションのDockerize事始め

  1. 1. Oracle対応アプリケーションの Dockernize事始め アップタイム・テクノロジーズ 永安 悟史 JPOUG in 15 minutes #6
  2. 2. 永安 悟史 • 略歴 – 2004年 某大学院 修了 – 2004年 NTTデータ 入社(~2009) – 2009年 アップタイムテクノロジーズ 創業 代表(現職) – 2012年 某ビジネススクール 修了(MBA) – 2013年 某ヘルスケアベンチャー CTO (~2015) • 専門領域 – データベース、データマネジメント – IT基盤全般、データセンタ、IT運用 – 次世代型のR&D、テクノロジー・マネジメント(MOT)、ICTに よる意思決定プロセスの向上、戦略の遂行能力の向上 @snaga
  3. 3. 情報系システムとマエショリスト • 普段やっていること – データ統合の開発(計画~設計(モデリング)~実装~保守) – コード、マスタの統合 – ETL処理(バッチ処理)の設計、実装、運用 – ジョブの設計、実装、運用 – データの一貫性、整合性のチェック – メタデータのメンテナンス – 分析担当の人と利用したいデータのあるべき姿の検討 – 分析担当の人へのデータに関するQ&A対応 – 次期の分析プラットフォームの相談事いろいろ
  4. 4. さて
  5. 5. http://pgsqldeepdive.blogspot.jp/2017/05/hecatoncheir-data-stewardship-studio.html
  6. 6. 環境構築が面倒で 面白そうなツールの利用を 諦めたことがありますか?
  7. 7. 環境構築が面倒で ツールを使ってもらえなかった ことがありますか?
  8. 8. Flask==0.12.1 Jinja2==2.9.6 Markdown==2.6.8 MarkupSafe==1.0 MySQL-python==1.2.5 SQLAlchemy==1.1.3 Werkzeug==0.12.1 appdirs==1.4.3 click==6.7 cx-Oracle==5.3 itsdangerous==0.24 packaging==16.8 psycopg2==2.7.1 pymssql==2.1.3 pyparsing==2.2.0 python-dateutil==2.6.0 six==1.10.0 xlrd==1.0.0 Python 2.7 Oracle Instant Client MySQL yum repo MySQL client library PostgreSQL yum repo PostgreSQL client library
  9. 9. ・・・
  10. 10. DBエンジニアにとってのDocker • 世の中には面白いツールがいろいろある • もっと簡単にいろんなツールを試せるはず • もっと簡単にいろんな人に使ってもらえるはず • しかも、環境を汚すことを心配せずに
  11. 11. Hecatoncheir https://github.com/snaga/Hecatoncheir
  12. 12. データ活用のためのマネジメントツール • データ活用のためのレポジトリ兼ポータル – プロファイリング、カタログ化、データ品質監視、等 DWH/DMT データソース ETL データ管理者 データ利用者 カタログ、 統計情報、 ビジネス用語 データ品質 データ プロファイリング データ プロファイリング
  13. 13. 構成コンポーネント • クライアントツール – データベースからデータを収集してレポジトリに保存 • サーバ – レポジトリの内容を公開するサーバ • 各種ライブラリに依存 – Pythonの各種ライブラリ – Oracleクライアントライブラリ – 他
  14. 14. Oracle対応ツールのDocker化 • コマンド一発で数分以内に ready to go にしたい • もちろん、クライアントもサーバも • ただし、データだけは残しておきたい
  15. 15. 実現したかったシステム構成 Windows CentOS 7 クライアント (コンテナ) サーバ (コンテナ) Oracle 12c レポジトリ PuTTY Firefox ssh/bash http SQL Developer
  16. 16. 実現できたシステム構成 Windows CentOS 7 クライアント (コンテナ) サーバ (コンテナ) レポジトリ PuTTY Firefox ssh/bash http SQL Developer RDS for Oracle Oracle SE One 11g
  17. 17. デモ①
  18. 18. デモ① • Docker Hubからのイメージ取得 • データプロファイリング(クライアント実行) • レポジトリ公開(サーバ実行)
  19. 19. Docker Hubからのイメージ取得 docker pull uptimejp/hecatoncheir:jpoug 取得するイメージ名 ・ユーザ名 ・レポジトリ名 ・タグ https://vimeo.com/243096186
  20. 20. クライアントの実行 (プロファイリング) docker run -v /tmp/docker:/docker -ti uptimejp/hecatoncheir:jpoug /usr/bin/dm-run-profiler --dbtype oracle --host datacatalog-demo01.ci5rxi3fsyoe.ap- northeast-1.rds.amazonaws.com --port 1521 --dbname ORCL --user oracle --pass XXXXX -o /docker/repo.db 実行するイメージ名 ディスク領域の ホスト-コンテナ間の マッピング 実行するコマンドと そのオプション Oracle DBに接続 ホスト名とポート番号ホスト名とポート番号 SID 接続用ユーザ/ パスワード レポジトリファイルの PATH https://vimeo.com/243096558
  21. 21. サーバの実行 (レポジトリ公開) docker run -v /tmp/docker:/docker -p 8080:8080 -ti uptimejp/hecatoncheir:jpoug /usr/bin/dm-run-server /docker/repo.db ネットワークポートの ホスト-コンテナ間の マッピング https://vimeo.com/243096673
  22. 22. デモ②
  23. 23. デモ② • Dockerイメージのビルド
  24. 24. Dockerイメージのビルド docker build -t uptimejp/hecatoncheir:jpoug . ビルドするイメージ名 ・ユーザ名 ・レポジトリ名 ・タグ Dockerfileのある ディレクトリ https://vimeo.com/243096708
  25. 25. Dockerファイル(抜粋) FROM centos:7 MAINTAINER Satoshi Nagayasu <snaga@uptime.jp> ENV ORACLE_HOME=/usr/lib/oracle/12.2/client64 ENV LD_LIBRARY_PATH=$ORACLE_HOME/lib ENV LANG=C # Oracle support RUN yum install -y libaio unzip RUN rpm -ivh https://s3-ap-northeast-1.amazonaws.com/uptime- dev01/oracle/oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm RUN rpm -ivh https://s3-ap-northeast-1.amazonaws.com/uptime- dev01/oracle/oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm # Hecatoncheir RUN curl -O https://codeload.github.com/snaga/Hecatoncheir/zip/develop; unzip develop RUN cd Hecatoncheir-develop; pip install -r requirements.txt; pip install . https://github.com/snaga/Hecatoncheir_on_Docker
  26. 26. Dockerイメージの開発 ベースにする イメージの決定 最初(空)の Dockerfile作成 最初のイメージの ビルド docker run /bin/bash で コンテナに入る 環境構築に必要な コマンドの実行 コマンドを Dockerfileに転記 docker buildで イメージをビルド docker runで 動作確認 docker pushで 公開
  27. 27. まとめ • DBエンジニアにとってのDockerとは • Dockerによってどれくらい簡単にツールが使えるように なるか • Oracle対応のツールをどうやってDocker化するか • もっといろいろなツールを使ってみよう • ぜひ、Hecatoncheirも使ってみてください!m(_ _)m
  28. 28. Q&A • Twitter: snaga • Github: snaga • E-Mail: satoshi.nagayasu@gmail.com
  29. 29. リソース • CentOS 7 on Vagrant – CentOS公式box (v1708.01) • https://app.vagrantup.com/centos/boxes/7 – Windows+VagrantでCentOS7の公式boxが起動できない("rsync" could not be found on your PATH) • https://qiita.com/tenmyo/items/c2bb714117c98ae979de – VagrantのAuthentication failure.エラーへの対応 • https://qiita.com/yyuuiikk/items/7b8a2069c11b238da3c3 • Docker on CentOS 7 – CentOS7 で Docker を使ってみる - CUBE SUGAR CONTAINER • http://blog.amedama.jp/entry/2015/09/24/222040 – dockerコンテナからマウントしたホストディレクトリへの操作が拒否される • https://qiita.com/RyotaIshii/items/0ad8d3a13fed5384085a • Dockerfile – いまさら聞けないDocker入門:Dockerfileとdocker buildコマンドでDockerイメージの作成 - @IT • http://www.atmarkit.co.jp/ait/articles/1407/08/news031.html – Dockerfile リファレンス — Docker-docs-ja 17.06.Beta ドキュメント • http://docs.docker.jp/engine/reference/builder.html • Hecatoncheir – https://github.com/snaga/Hecatoncheir – https://github.com/snaga/Hecatoncheir_on_Docker
  30. 30. Thank you!

×