遙かなるマチョジニア

マッチョXエンジニアを目指すブログ

【書評】Docker 書評というにはあまりにも失礼なくらいわからない

スポンサードリンク

Docker

Docker

  • 作者:Adrian Mouat
  • 発売日: 2016/08/17
  • メディア: 単行本(ソフトカバー)

業務でDockerを使うようになってきたので、ちゃんと体系的に知って起きたと思って手にとってみたが、まあむずい。

Ⅰ部 背景と基本

これこれ!こういうことをちゃんと体系的に知りたかったんだよねえ!!

Ⅱ部 Dockerのあるソフトウェアライフサイクル

お、おう。そうだな、こういうハイテクな使い方があるんだ、ふむふむ。

Ⅲ部 ツールとテクニック

・・・。

という具合である。

まあ今使うと言っても、リソースをスケールアウトしたいとか、いろんなコンテナを起動して連携したいとかいう場面はないのだ。 ただ実験環境をクリーンにして、受け渡しやコード管理を楽にしたいという理由でDockerを使っているから、とりあえずI部の内容をちゃんと把握しておけば合格だと思っている。

この書籍の出版は2016年であって、もう4年くらい経ってるわけだから、ここで紹介されている内容だってだいぶ陳腐化されている可能性はある。 書籍でのdocker バージョンは1.9(19じゃない)だし、オーケストレーションでswarmなんて使わないでしょ?しらんけど。 なのであまり変わらないであろう「背景と基本」を抑えておけば、、、あとは必要な時に学習するのがよいのではなかろうか、と自分に言い聞かせる。

まあ3,600円するけど自分にとってその価値があるかというと、微妙ではある。というか、「お前にはまだ早い」と言わんばかりの内容であった。

個人的付箋

コンテナのポートを自動割り当て

-Pという引数を使うとDockerにホスト上の空いているポートを自動的にフォワードさせることができる。

$ ID=$(docker run -d -P nginx)
$ docker port $ID 80
0.0.0.0:32771
$ curl localhost:32771
<!DOCTYPE html>
<html>
…

コンテナ間でのデータの共有

コンテナ間でのデータの共有はdocker runで--volumes-from CONTAINERという引数をつかうことで実現できる。

$ docker run -it -h NEWCONTAINER --volumes-from container-test debian /bin/bash

これを使って複数コンテナ間でデータの共有をするためだけに作られた最小限なデータコンテナを用意するテクニックがある。

開発環境と実行環境の切替

cmd.shというファイルを作成する。

#/bin/bash
set -e

if [ "$ENV" = 'DEV' ]; then
  exec python "development.py"
else
  exec python "product.py"
fi

Dockerfileに

CMD["/cmd.sh"]

を追記して

$ docker run -e "ENV=DEV" -p 5000:5000 test-container