SlideShare a Scribd company logo
1 of 53
paizaのオンラインジャッジを支える
Dockerとその周辺
Gino, paiza
吉岡恒夫
http://paiza.jp/
E-Mail: tsuneo.yoshioka@gi-no.jp
Twitter: @yoshiokatsuneo
自己紹介 (吉岡 恒夫)
• 2014年4月 ジョイン
(paizaでpaizaに転職しました)
• paizaのオンラインジャッジシステムの開発
• オンラインコーディング環境paiza.IOの開発
• Linux, Docker, Rails, AngularJS
目的
• paizaでのコンテナ技術の利用の経緯や方法の
紹介
• みなさまがコンテナを活用するきっかけ
527,268
Dockerコンテナ数/月
(2014年12月)
本日の目次
1. paizaとは
2. paizaジャッジシステムの要件
3. Dockerとは
4. paizaジャッジシステムでのDocker利用方法
paizaとは?
paizaとは?
コーディングスキルチェックによる
プログラマ x IT企業
マッチングサービス
スキルチェックのフロー
1. paizaから問題を出す
2. 回答プログラムを書く
3. コードを実行する
4. 出力が正解か判定する
5. 結果(合否)を表示する
ジャッジシステム
ジャッジシステムの要件
1.不正できない(テストコード、他のコードの保護)
2.公平なリソース
3.システムが壊されない
4.自由な環境(複数言語、実機と同様の環境)
5.速い
6.スケーラブル
コード実行環境の安定動作
• 不正できない(テストコード、他のコードの保護)
• 公平なリソース
• システムが壊されない
→コード実行環境の孤立化・仮想化
仮想化の方法
• 仮想マシン(VMware, Xen)
• コンテナ仮想化(Googleは週に20億コンテナ)
•何もしない
→他の人のコードが見える
❌
•ディレクトリのアクセスモード設定を分ける
→CPU等リソース制限がない
❌
仮想マシンとコンテナの違い
ホストマシン
ホストOS
仮想マシン
ゲストOS
プロセス
ホストマシン
ホストOS
仮想マシン
ゲストOS
コンテナ コンテナ
プロセス プロセス プロセス
プロセス プロセス プロセス プロセス
• 仮想マシン: 仮想環境ごとにOSが動作する
• コンテナ: ホストと同一のOS上で動作
仮想マシン コンテナ
仮想マシン v.s. コンテナ
仮想マシン コンテナ
起動
❌
(数分)
⚪︎
(1秒未満)
メモリ
❌
(OS本体)
⚪︎
(必要なプロセス分)
のみ)
OSの自由度
⚪︎
(任意)
❌
(ホストと共有)
コンテナは軽量!
→ジャッジシステムで利用
Linuxコンテナ環境
≒Docker
Dockerとは?
Linux向けの
軽量な
仮想化環境
Docker概要
• Linux上で動作する
コンテナ型仮想化ソフトウェア
• PaaSプロバイダのdotCloudが
ユーザアプリケーションの動作環境として
開発
• Go言語で記述
Dockerのファイルシステム管理
• Union File Systemを利用(Copy on Write)
• ファイルシステムを積み重ねる。読み込みは一番上のレイヤーから、書き込
みは最上位のレイヤーに差分として記録。
• 共通のベースイメージを再利用できる
プロセス
/usr
/home
プロセス
/home
ユーザ環境 ユーザ環境
/homeベース
イメージ
(OS)
コンテナ コンテナ
Docker: リソース制限
• Linuxのcgroupsでコンテナ単位のプロセスグル
ープを作成し、グループ内で利用するリソー
スを制限
メモリ
CPU
メモリ
プロセス
プロセス
プロセス
プロセス
プロセス
プロセス
プロセス
CPU CPU
コンテナ1 コンテナ2
Docker: Namespace隔離
1. プロセス(PID)
2. ネットワーク(virtual Ethernet)
3. ホスト名(UTS)
4. Mount
5. IPC
6. User
(Linuxの機能としてはあるが、Dockerでは利用できない)
Dockerデモ
「100人乗っても大丈夫!」
Dockerホスト
nginx on docker
paiza
ジャッジシステムでの
Dockerの使い方
コード実行の流れ
ベースイメージの作成
(OS, ライブラリ)
実行コンテナ作成
実行コンテナ破棄
コード実行
実行ファイル
実行結果
# docker build
# docker run
# docker kill
# docker rm
CPUの利用管理
• 4コア(8スレッド)
AWS: c3.x2large
• 複数のコードを同時実行
• コード実行時のCPUリソースを公平に!
サービス
CPUの利用管理
コンテナ1 コンテナ2
3 コンテナ4
コンテナ5
CPU-1
CPU-2
CPU-3
CPU-4
コンテナ1
コンテナ2
コンテナ3
サービス
CPUの量が運に左右される
コンテナ単位でCPUを割り当てる
→コンテナのCPU数を制限
→コンテナがCPUを独占
→サービスとコンテナでCPUを分ける
何も考えずに複数のコンテナを同時実行した場合CPU単位でコンテナを割り当てた場合
CPU コア / CPU スレッド
• 個々のCoreは独立して並列実行できる
Quad-Core AMD Opteron processor (front view die, white background)
Attribution: Advanced Micro Devices, Inc. (AMD)
http://en.wikipedia.org/wiki/Opteron#mediaviewer/File:Quad-Core_AMD_Opteron_processor.jpg
Core Core
Core Core
プロセス1
CPUスレッド
(ハイパースレッディング)
• 物理的には1つのCPUコア
• ソフトウェアからは2つの(論理)CPU
• 物理CPUの実行ユニットを効率的に使うことで全体として高速化(30%程度)
物理CPUコア
論理CPU 論理CPU
実行ユニット
実行ユニット
実行ユニット
実行ユニット
プロセス1 プロセス2
ハードウェア
ソフトウェア
CPU CPU
CPUスレッドと公平性
• 1論理CPUを占有しても物理CPUの利用度で速度が変わる
論理CPU
コンテナ1 コンテナ2
実行ユニット
実行ユニット
論理CPU
物理CPUコア
実行ユニット
実行ユニット
コンテナ1
コンテナ1個に物理CPUコア1個(論理CPU2個)
CPU論理CPU
コンテナ3
実行ユニット
実行ユニット
物理CPUコア
実行ユニット
実行ユニット
論理CPU
コンテナ2
メモリの利用管理
• Docker/cgroupsの機能で512MBに制限
• 一部言語では言語単位のメモリ設定が必要
• Java: -Mxオプション
指定しないとメモリ容量から自動的に設定
• PHP: memory_limit設定
プロセスの利用制限
• “fork爆弾”対策
• Docker自身にはfork数の制限はない
• カーネルメモリ制限
→正確に把握できない
→Dockerから直接利用できない
• Linuxのユーザ資源管理(RLIMIT_NPROC)により、
ユーザ単位でプロセス数を制限
• 同時実行するコンテナごとに別ユーザを割り当てる
ディスク領域の制限
• Docker自身にはディスク容量制限機能はない
• ディスクQuotaでユーザ単位のディスク制限
• 同時実行数分のLinuxユーザを作成し、別ユー
ザでコード実行
ネットワークの利用管理
• スキルチェックではネットワークは無効化
→ テストケースの漏洩等防止
• ネットワークを利用するサービス(paiza.io)では
、”bridge”でネットワーク仮想化
• NATのコネクション管理機能(ip_conntrack)を利
用して利用状況を監視
コンテナイメージの読み込み
• ディスクに保持した場合、キャッシュ状況に
よりコード実行速度が変わる
• メモリディスク上に保存
ディスクメモリプロセス
遅い
速い
実行時間の測定
• 正確に測定
→ コンテナ内でtimeコマンド実行
• 改ざん防止
→ timeコマンドはrootで、コードは一般ユーザ
で実行(rootでtimeコマンドを開始後、コード実
行直前にユーザを一般ユーザに変更)
スケールアウト
• キュー(RabbitMQ)を経由して複数のジャッジサーバを接続
• ジャッジサーバを追加し、キューからの読み込みを増やすことでスケー
ルアウト
• ジャッジサーバが停止した場合、キューの再送が行われることで冗長化
APIサーバ キュー
ジャッジサ
ーバ
ジャッジサ
ーバ
ジャッジサ
ーバ
APIサーバAPIサーバユーザ
ジャッジシステムの活用
POH!
(Paiza Online Hackathon)
プログラムを解きながらすすむ
エンジニアの感動ラブストーリー
なぜか勝手に中国語サイトが・・・
動画プログラミング学習
コードを書きながら学習できる
動画学習サービス
paiza.IO
- オンラインコード実行環境 -
ブラウザ上で気軽にプログラムを試せる!
Dockerの利用場面
8つのDocker利用目的
1. サーバ管理を簡単に! => コンテナはどこでも動作!
2. 開発環境依存の問題をなくす! => 開発者全員が同じコンテナを利用できる!
3. 開発・デプロイ環境の同一化! => 開発環境とデプロイ環境を同一コンテナ利用!
4. マイクロサービス化! => サービス間の依存性を減らす!
5. サーバリソースの節約! => 同一物理サーバ上で複数コンテナが軽量動作!
6. デバッグが簡単!=> いつでもスナップショット/コピーをとって解析できる!
7. 複数テナント! => 複数のサービスを1つの物理サーバ上でまとめて動作!
8. デプロイ高速化! => コンテナ起動は一瞬!
高速で軽量仮想化環境が作れることを利用!
Docker以外のLinuxコンテナ
の動向
Rocket
Vagga
LXD
Rocket
• 2014年11月 Ver0.1リリース
• Dockerの主流コントリビュータが開発
• シンプルで独立したツール群
• セキュリティ(署名)
• イメージの分散管理
• オープン
LXD
• 2015年2月 Ver 0.1 リリース
• LXCをベース
• デーモン動作
• 非特権コンテナ
• OpenStackプラグイン
Vagga
• 2015年2月 Ver0.2
• コマンド型(デーモンなし)
• ユーザ権限で動作
• 子プロセスとして動作
• root以外のユーザで動作
まとめ
• Docker/コンテナ技術
• paizaでのDocker利用事例
• 周辺技術
超軽量コンテナを使ってより
快適なサービス、環境に!
以上ありがとうございました!
Gino, paiza
吉岡恒夫
http://paiza.jp/
E-Mail: tsuneo.yoshioka@gi-no.jp
Twitter: @yoshiokatsuneo

More Related Content

What's hot

Java でつくる 低レイテンシ実装の技巧
Java でつくる低レイテンシ実装の技巧Java でつくる低レイテンシ実装の技巧
Java でつくる 低レイテンシ実装の技巧 Ryosuke Yamazaki
 
RustによるGPUプログラミング環境
RustによるGPUプログラミング環境RustによるGPUプログラミング環境
RustによるGPUプログラミング環境KiyotomoHiroyasu
 
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門Fixstars Corporation
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門Fixstars Corporation
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みMasahiro Sakai
 
CUDAプログラミング入門
CUDAプログラミング入門CUDAプログラミング入門
CUDAプログラミング入門NVIDIA Japan
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門大樹 小倉
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学MITSUNARI Shigeo
 
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリングmlm_kansai
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意Yoshitaka Kawashima
 
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMPYusuke Kagata
 
開発者が語る NVIDIA cuQuantum SDK
開発者が語る NVIDIA cuQuantum SDK開発者が語る NVIDIA cuQuantum SDK
開発者が語る NVIDIA cuQuantum SDKNVIDIA Japan
 
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解MITSUNARI Shigeo
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)NTT DATA Technology & Innovation
 
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方Shohei Koyama
 
Quine・難解プログラミングについて
Quine・難解プログラミングについてQuine・難解プログラミングについて
Quine・難解プログラミングについてmametter
 
マルチコアを用いた画像処理
マルチコアを用いた画像処理マルチコアを用いた画像処理
マルチコアを用いた画像処理Norishige Fukushima
 
If文から機械学習への道
If文から機械学習への道If文から機械学習への道
If文から機械学習への道nishio
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すTakaya Saeki
 

What's hot (20)

プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
Java でつくる 低レイテンシ実装の技巧
Java でつくる低レイテンシ実装の技巧Java でつくる低レイテンシ実装の技巧
Java でつくる 低レイテンシ実装の技巧
 
RustによるGPUプログラミング環境
RustによるGPUプログラミング環境RustによるGPUプログラミング環境
RustによるGPUプログラミング環境
 
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
 
CUDAプログラミング入門
CUDAプログラミング入門CUDAプログラミング入門
CUDAプログラミング入門
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
 
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
 
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMP
 
開発者が語る NVIDIA cuQuantum SDK
開発者が語る NVIDIA cuQuantum SDK開発者が語る NVIDIA cuQuantum SDK
開発者が語る NVIDIA cuQuantum SDK
 
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
 
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
 
Quine・難解プログラミングについて
Quine・難解プログラミングについてQuine・難解プログラミングについて
Quine・難解プログラミングについて
 
マルチコアを用いた画像処理
マルチコアを用いた画像処理マルチコアを用いた画像処理
マルチコアを用いた画像処理
 
If文から機械学習への道
If文から機械学習への道If文から機械学習への道
If文から機械学習への道
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
 

Viewers also liked

Docker on RHEL & Project Atomic 入門 - #Dockerjp 4
Docker on RHEL & Project Atomic 入門 - #Dockerjp 4Docker on RHEL & Project Atomic 入門 - #Dockerjp 4
Docker on RHEL & Project Atomic 入門 - #Dockerjp 4Emma Haruka Iwao
 
【第11回 クラウドごった煮(コンテナ勉強会)】Docker networking tools
【第11回 クラウドごった煮(コンテナ勉強会)】Docker networking tools【第11回 クラウドごった煮(コンテナ勉強会)】Docker networking tools
【第11回 クラウドごった煮(コンテナ勉強会)】Docker networking toolsNobuyuki Matsui
 
Dockerの基本的な話
Dockerの基本的な話Dockerの基本的な話
Dockerの基本的な話gree_tech
 
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜Shuji Yamada
 
Dockerの基本と応用~快適コンテナライフを実現するArukas~
Dockerの基本と応用~快適コンテナライフを実現するArukas~Dockerの基本と応用~快適コンテナライフを実現するArukas~
Dockerの基本と応用~快適コンテナライフを実現するArukas~Masahito Zembutsu
 
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月VirtualTech Japan Inc.
 
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...さくらインターネット株式会社
 
Docker技術情報アップデート v1.9 ネットワークとオーケストレーション
Docker技術情報アップデート v1.9 ネットワークとオーケストレーションDocker技術情報アップデート v1.9 ネットワークとオーケストレーション
Docker技術情報アップデート v1.9 ネットワークとオーケストレーションMasahito Zembutsu
 
Dockerのネットワークについて
DockerのネットワークについてDockerのネットワークについて
DockerのネットワークについてNobuyuki Matsui
 
捕鯨!詳解docker
捕鯨!詳解docker捕鯨!詳解docker
捕鯨!詳解docker雄哉 吉田
 
Docker hands on nifty sakura jul19
Docker hands on nifty sakura jul19Docker hands on nifty sakura jul19
Docker hands on nifty sakura jul19Masahito Zembutsu
 
Docker技術情報アップデート 2015年7月号
Docker技術情報アップデート 2015年7月号Docker技術情報アップデート 2015年7月号
Docker技術情報アップデート 2015年7月号Masahito Zembutsu
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入Yu Nobuoka
 
Docker with RHEL7 技術勉強会
Docker with RHEL7 技術勉強会Docker with RHEL7 技術勉強会
Docker with RHEL7 技術勉強会Etsuji Nakai
 
Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介
Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介
Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介Masahito Zembutsu
 
OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~
OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~
OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~Kunihiro TANAKA
 
What's New in Docker Enterprise Edition (in Japanese)
What's New in Docker Enterprise Edition (in Japanese)What's New in Docker Enterprise Edition (in Japanese)
What's New in Docker Enterprise Edition (in Japanese)Creationline,inc.
 
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪Kunihiro TANAKA
 
Docker Community Edition & Enterprise Edition
Docker Community Edition & Enterprise EditionDocker Community Edition & Enterprise Edition
Docker Community Edition & Enterprise EditionCreationline,inc.
 
8a1#19[はじめてのdocker] 公開版
8a1#19[はじめてのdocker] 公開版8a1#19[はじめてのdocker] 公開版
8a1#19[はじめてのdocker] 公開版Kamon Nobuchika
 

Viewers also liked (20)

Docker on RHEL & Project Atomic 入門 - #Dockerjp 4
Docker on RHEL & Project Atomic 入門 - #Dockerjp 4Docker on RHEL & Project Atomic 入門 - #Dockerjp 4
Docker on RHEL & Project Atomic 入門 - #Dockerjp 4
 
【第11回 クラウドごった煮(コンテナ勉強会)】Docker networking tools
【第11回 クラウドごった煮(コンテナ勉強会)】Docker networking tools【第11回 クラウドごった煮(コンテナ勉強会)】Docker networking tools
【第11回 クラウドごった煮(コンテナ勉強会)】Docker networking tools
 
Dockerの基本的な話
Dockerの基本的な話Dockerの基本的な話
Dockerの基本的な話
 
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
 
Dockerの基本と応用~快適コンテナライフを実現するArukas~
Dockerの基本と応用~快適コンテナライフを実現するArukas~Dockerの基本と応用~快適コンテナライフを実現するArukas~
Dockerの基本と応用~快適コンテナライフを実現するArukas~
 
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
 
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
 
Docker技術情報アップデート v1.9 ネットワークとオーケストレーション
Docker技術情報アップデート v1.9 ネットワークとオーケストレーションDocker技術情報アップデート v1.9 ネットワークとオーケストレーション
Docker技術情報アップデート v1.9 ネットワークとオーケストレーション
 
Dockerのネットワークについて
DockerのネットワークについてDockerのネットワークについて
Dockerのネットワークについて
 
捕鯨!詳解docker
捕鯨!詳解docker捕鯨!詳解docker
捕鯨!詳解docker
 
Docker hands on nifty sakura jul19
Docker hands on nifty sakura jul19Docker hands on nifty sakura jul19
Docker hands on nifty sakura jul19
 
Docker技術情報アップデート 2015年7月号
Docker技術情報アップデート 2015年7月号Docker技術情報アップデート 2015年7月号
Docker技術情報アップデート 2015年7月号
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
Docker with RHEL7 技術勉強会
Docker with RHEL7 技術勉強会Docker with RHEL7 技術勉強会
Docker with RHEL7 技術勉強会
 
Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介
Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介
Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介
 
OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~
OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~
OSC 2014 Tokyo/Spring さくらの社長が語る!「さくらのクラウド」でのウェブサービスかんたん運用術~Dockerをつかってみた~
 
What's New in Docker Enterprise Edition (in Japanese)
What's New in Docker Enterprise Edition (in Japanese)What's New in Docker Enterprise Edition (in Japanese)
What's New in Docker Enterprise Edition (in Japanese)
 
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
 
Docker Community Edition & Enterprise Edition
Docker Community Edition & Enterprise EditionDocker Community Edition & Enterprise Edition
Docker Community Edition & Enterprise Edition
 
8a1#19[はじめてのdocker] 公開版
8a1#19[はじめてのdocker] 公開版8a1#19[はじめてのdocker] 公開版
8a1#19[はじめてのdocker] 公開版
 

Similar to paizaのオンラインジャッジを支えるDockerとその周辺

PaaS / Cloud Foundry makes you happy
PaaS / Cloud Foundry makes you happyPaaS / Cloud Foundry makes you happy
PaaS / Cloud Foundry makes you happyKatsunori Kawaguchi
 
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについてMasahito Zembutsu
 
AWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャAWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャ真吾 吉田
 
最大公約数的なServiceWorker制作から見るPWAの勘所
最大公約数的なServiceWorker制作から見るPWAの勘所最大公約数的なServiceWorker制作から見るPWAの勘所
最大公約数的なServiceWorker制作から見るPWAの勘所Ryu Shindo
 
さくらのナレッジの運営から見えるもの
さくらのナレッジの運営から見えるものさくらのナレッジの運営から見えるもの
さくらのナレッジの運営から見えるもの法林浩之
 
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~Masahito Zembutsu
 
DevOpsを実現する為のChef活用テクニック
DevOpsを実現する為のChef活用テクニックDevOpsを実現する為のChef活用テクニック
DevOpsを実現する為のChef活用テクニックYu Kitazume
 
楽天がCloud foundryを選んだ理由
楽天がCloud foundryを選んだ理由楽天がCloud foundryを選んだ理由
楽天がCloud foundryを選んだ理由Rakuten Group, Inc.
 
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話Yahoo!デベロッパーネットワーク
 
元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction
元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction
元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introductionMasahito Zembutsu
 
タンジブルなモノづくりの過程はソフトウェア開発でも共通する
タンジブルなモノづくりの過程はソフトウェア開発でも共通するタンジブルなモノづくりの過程はソフトウェア開発でも共通する
タンジブルなモノづくりの過程はソフトウェア開発でも共通するRyoma Amakasu
 
Dokkuの活用と内部構造
Dokkuの活用と内部構造Dokkuの活用と内部構造
Dokkuの活用と内部構造修平 富田
 
インドのインターネット環境 との戦い方
インドのインターネット環境との戦い方インドのインターネット環境との戦い方
インドのインターネット環境 との戦い方健一 辰濱
 
IDN TLDをAzureのWebサイトで使う方法
IDN TLDをAzureのWebサイトで使う方法IDN TLDをAzureのWebサイトで使う方法
IDN TLDをAzureのWebサイトで使う方法Yoshihiro Ohsuka
 
Cloud native & cloud design patterns for small teams - ハッカーズチャンプルー2018
Cloud native & cloud design patterns for  small teams - ハッカーズチャンプルー2018Cloud native & cloud design patterns for  small teams - ハッカーズチャンプルー2018
Cloud native & cloud design patterns for small teams - ハッカーズチャンプルー2018Yutaka Tachibana
 
多対多のクラウド利用を支えるデータ標準化技術
多対多のクラウド利用を支えるデータ標準化技術 多対多のクラウド利用を支えるデータ標準化技術
多対多のクラウド利用を支えるデータ標準化技術 CData Software Japan
 

Similar to paizaのオンラインジャッジを支えるDockerとその周辺 (20)

PaaS / Cloud Foundry makes you happy
PaaS / Cloud Foundry makes you happyPaaS / Cloud Foundry makes you happy
PaaS / Cloud Foundry makes you happy
 
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
 
AWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャAWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャ
 
最大公約数的なServiceWorker制作から見るPWAの勘所
最大公約数的なServiceWorker制作から見るPWAの勘所最大公約数的なServiceWorker制作から見るPWAの勘所
最大公約数的なServiceWorker制作から見るPWAの勘所
 
さくらのナレッジの運営から見えるもの
さくらのナレッジの運営から見えるものさくらのナレッジの運営から見えるもの
さくらのナレッジの運営から見えるもの
 
Heroku
HerokuHeroku
Heroku
 
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
 
DevOpsを実現する為のChef活用テクニック
DevOpsを実現する為のChef活用テクニックDevOpsを実現する為のChef活用テクニック
DevOpsを実現する為のChef活用テクニック
 
楽天がCloud foundryを選んだ理由
楽天がCloud foundryを選んだ理由楽天がCloud foundryを選んだ理由
楽天がCloud foundryを選んだ理由
 
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
 
Info talk #36
Info talk #36Info talk #36
Info talk #36
 
元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction
元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction
元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction
 
Osc2010 Do LT
Osc2010 Do LTOsc2010 Do LT
Osc2010 Do LT
 
タンジブルなモノづくりの過程はソフトウェア開発でも共通する
タンジブルなモノづくりの過程はソフトウェア開発でも共通するタンジブルなモノづくりの過程はソフトウェア開発でも共通する
タンジブルなモノづくりの過程はソフトウェア開発でも共通する
 
My cordovaprojectstory
My cordovaprojectstoryMy cordovaprojectstory
My cordovaprojectstory
 
Dokkuの活用と内部構造
Dokkuの活用と内部構造Dokkuの活用と内部構造
Dokkuの活用と内部構造
 
インドのインターネット環境 との戦い方
インドのインターネット環境との戦い方インドのインターネット環境との戦い方
インドのインターネット環境 との戦い方
 
IDN TLDをAzureのWebサイトで使う方法
IDN TLDをAzureのWebサイトで使う方法IDN TLDをAzureのWebサイトで使う方法
IDN TLDをAzureのWebサイトで使う方法
 
Cloud native & cloud design patterns for small teams - ハッカーズチャンプルー2018
Cloud native & cloud design patterns for  small teams - ハッカーズチャンプルー2018Cloud native & cloud design patterns for  small teams - ハッカーズチャンプルー2018
Cloud native & cloud design patterns for small teams - ハッカーズチャンプルー2018
 
多対多のクラウド利用を支えるデータ標準化技術
多対多のクラウド利用を支えるデータ標準化技術 多対多のクラウド利用を支えるデータ標準化技術
多対多のクラウド利用を支えるデータ標準化技術
 

More from paiza

141214_paizaでpizzaもぐもぐ勉強会
141214_paizaでpizzaもぐもぐ勉強会141214_paizaでpizzaもぐもぐ勉強会
141214_paizaでpizzaもぐもぐ勉強会paiza
 
シリコンバレー 面接体験
シリコンバレー 面接体験シリコンバレー 面接体験
シリコンバレー 面接体験paiza
 
mod7占い【上級・アルゴリズム】解説
mod7占い【上級・アルゴリズム】解説mod7占い【上級・アルゴリズム】解説
mod7占い【上級・アルゴリズム】解説paiza
 
ハノイの塔 解説
ハノイの塔 解説ハノイの塔 解説
ハノイの塔 解説paiza
 
paizaオンラインハッカソン(略してPOH![ポー!])Lite「天才火消しエンジニア霧島 もしPMおじさんが『丸投げ』を覚えたら」解説
paizaオンラインハッカソン(略してPOH![ポー!])Lite「天才火消しエンジニア霧島 もしPMおじさんが『丸投げ』を覚えたら」解説paizaオンラインハッカソン(略してPOH![ポー!])Lite「天才火消しエンジニア霧島 もしPMおじさんが『丸投げ』を覚えたら」解説
paizaオンラインハッカソン(略してPOH![ポー!])Lite「天才火消しエンジニア霧島 もしPMおじさんが『丸投げ』を覚えたら」解説paiza
 
【社内勉強会資料】自社サービスエンジニアの為の「UX設計と情報設計」
【社内勉強会資料】自社サービスエンジニアの為の「UX設計と情報設計」【社内勉強会資料】自社サービスエンジニアの為の「UX設計と情報設計」
【社内勉強会資料】自社サービスエンジニアの為の「UX設計と情報設計」paiza
 

More from paiza (6)

141214_paizaでpizzaもぐもぐ勉強会
141214_paizaでpizzaもぐもぐ勉強会141214_paizaでpizzaもぐもぐ勉強会
141214_paizaでpizzaもぐもぐ勉強会
 
シリコンバレー 面接体験
シリコンバレー 面接体験シリコンバレー 面接体験
シリコンバレー 面接体験
 
mod7占い【上級・アルゴリズム】解説
mod7占い【上級・アルゴリズム】解説mod7占い【上級・アルゴリズム】解説
mod7占い【上級・アルゴリズム】解説
 
ハノイの塔 解説
ハノイの塔 解説ハノイの塔 解説
ハノイの塔 解説
 
paizaオンラインハッカソン(略してPOH![ポー!])Lite「天才火消しエンジニア霧島 もしPMおじさんが『丸投げ』を覚えたら」解説
paizaオンラインハッカソン(略してPOH![ポー!])Lite「天才火消しエンジニア霧島 もしPMおじさんが『丸投げ』を覚えたら」解説paizaオンラインハッカソン(略してPOH![ポー!])Lite「天才火消しエンジニア霧島 もしPMおじさんが『丸投げ』を覚えたら」解説
paizaオンラインハッカソン(略してPOH![ポー!])Lite「天才火消しエンジニア霧島 もしPMおじさんが『丸投げ』を覚えたら」解説
 
【社内勉強会資料】自社サービスエンジニアの為の「UX設計と情報設計」
【社内勉強会資料】自社サービスエンジニアの為の「UX設計と情報設計」【社内勉強会資料】自社サービスエンジニアの為の「UX設計と情報設計」
【社内勉強会資料】自社サービスエンジニアの為の「UX設計と情報設計」
 

paizaのオンラインジャッジを支えるDockerとその周辺

Editor's Notes

  1. paiza知ってる? 使ってる? Docker知ってる? 使ってる?
  2. サービス、システム、作ってる人もはっぴー、世の中もハッピーに!
  3. 転職できるかどうかに関わる 入試の例/カンニングできない 自由な環境/言語も環境も制限されすぎない(forkできない/ファイル作れない) 実行時間が毎回同じ 実行時間を元にコードの質(計算量)を判定 多数のアクセスを同時処理 一度の判定では多数のテストデータで確認するため、他のユーザを待たせないようにする 多くのアクセスがある場合にスケールする POHなどのイベント時に台数を増やすことで対応できるようにする 確実に実行結果を返す 混んでいても待っていれば結果を返す 多数の言語に対応 C/C++/Java/PHP/Ruby/Perl/Python… 隔離された同一の実行環境 テストデータや他の人のソースコードにアクセスできない 任意のコードを実行可能 攻撃的なコードが来てもサービスが停止しない
  4. 使う側
  5. $ (set -x; for port in `seq 8000 8100`; do docker run -p ${port}:80 nginx & done) $ boot2docker ssh # watch -n 1 'ps|grep "nginx: master”'
  6. Nginx on Docker on Ubuntu on Virtual Box on Mac
  7. 論理CPUをオフにすればいい? =>AWSではできない
  8. ulimitでのファイルサイズ制限を併用
  9. 中国語版も?
  10. 中国語版も?
  11. 中国語版も?
  12. http://blog.flux7.com/blogs/docker/8-ways-to-use-docker-in-the-real-world Dockerは速い、簡単
  13. Dockerの弱点、特徴
  14. 現在0.3.1 App Container https://coreos.com/blog/rocket/ Unfortunately, a simple re-usable component is not how things are playing out. Docker now is building tools for launching cloud servers, systems for clustering, and a wide range of functions: building images, running images, uploading, downloading, and eventually even overlay networking, all compiled into one monolithic binary running primarily as root on your server. The standard container manifesto was removed. We should stop talking about Docker containers, and start talking about the Docker Platform. It is not becoming the simple composable building block we had envisioned.