タダです。
今回はDocker実践活用ガイドの11~13章を読んだ内容をまとめていきます。 ※記事は理解ができるたびに何度もアップデートしていこうと思います。 book.mynavi.jp
なお、副教材としてドットインストールも使っていこうと思います。
目次
なお、各章の内容は次の通りです。
- 1章 Dockerとは
- 2章 Dockerの仕組み
- 3章 Dockerのインストール
- 4章 Dockerを使ってみよう(コマンド編)
- 5章 Dockerを使ってみよう(Kitematic(GUI)編)
- 6章 Dockerイメージの操作
- 7章 Dockerを使いこなす
- 8章 複数のDokcerを使う(Docker Machine、Docker Swarm、Docker Compose)
- 9章 Dockerをクラウドで使う(Docker Cloud)
- 10章 DockerとJavaScriptでウェブサービスを作る(簡易オンラインジャッジシステム)
- 11章 Dockerを利用した実運用ウェブサービス構築事例(paizaオンラインジャッジシステム)
- 12章 paizaの実行環境APIを使いウェブサービスを作る(簡易オンラインジャッッジシステム)
- 13章 Dockerの内部
11章
- paiza.IOでは、コードの実行にDockerの基盤に利用している
- DockerのコンテナごとにCPUを割り当てることで各コンテナは確実に1つのCPUを占有できる
- AWSでは、論理CPU番号と物理CPU番号の対応は以下のようになっている(
/proc/cpuinfo
から確認できる)
論理CPUコアの番号 | 物理CPUコアの番号 |
---|---|
0 | 0 |
1 | 1 |
2 | 2 |
3 | 3 |
4 | 0 |
5 | 1 |
6 | 2 |
7 | 3 |
- DockerのCPUコア割り当ては、
docker run --cpuset-cpus=1,5
で割り当てる - メモリは、言語によって個別のメモリ設定を行う
- プロセスの制限は、個別にユーザーを作り、コンテナごとに実行ユーザーを変えてプロセス数の制限を行う
- ディスク容量の制限には、ディスクquotaを利用する
- Dockerイメージ・コンテナはメモリ上に保存することで常にファイルの読み込みをメモリから読み込む時間を早くしている
- Dockerイメージ・コンテナなどのデータは/var/lib/dockerに保存されているためtmpfsを使ってRAMディスクを作成し、このディレクトリにマウントする
sudo service docker stop mv /var/lib/docker /var/lib/docker-orig mkdir /var/lib/docker mount -t tmpfs -o size=10G none /var/lib/docker cp -rp /var/lib/docker-orig/* /var/lib/docker sudo service docker start
- 負荷分散は、ELB->Web(APIサーバー)->RabbitMQ(AMQP)->Dockerホストで処理を行っている
12章
- paizaのコード実行環境APIでは、3つのAPIが利用できる
- create
- get_status
- get_details
- createでは、コードを提出してコードを実行できる
- get_statusでは、提出コードの実行状態を取得する
- get_detailsでは、提出コードの実行結果を取得する
- HTMLとNode.jsのプログラムを実行して上記のAPIを叩くことを行う
13章
- Dockerコンテナのディレクトリの/var/lib/dockerには、Dockerデータが保存されて、コンテナで利用するファイルシステムの階層も作られる
- cgroupsは、/sys/fs/cgroups/memory/docker/コンテナIDで確認できる
- コンテナ内のプロセスの名前空間は、/proc/プロセスID/nsで確認できる
振り返り
- Dockerコンテナについてなんとなくの理解だったところを手を動かしての学ぶきっかけとなりました。
- 3月~4月にかけてはコンテナ技術に触れてきました。Kubernetesも書籍を買ったので継続して学んでいきます。
- Docker ComposeやSwarmはもうちょっと勉強したいです。
- 5月始まってしまいましたが、以下のことを取り組み始めました
5月からはサーバーレスの本を読んでいきます www.oreilly.co.jp
関連ブログ yoshidashingo.hatenablog.com kakakakakku.hatenablog.com