プログラマのためのDocker教科書を読み始めた
Dockerを使いこなせないと会社で人権がないので プログラマのためのDocker教科書を読み始めました。
プログラマのためのDocker教科書 インフラの基礎知識&コードによる環境構築の自動化
- 作者: WINGSプロジェクト阿佐志保
- 出版社/メーカー: 翔泳社
- 発売日: 2015/11/19
- メディア: Kindle版
- この商品を含むブログ (3件) を見る
プログラマのための、というタイトルから、 "Dockerの使い方だけ紹介" みたいな雰囲気があるんですが、 想定以上に諸々しっかり書いてありました。
序盤にインフラ・仮想化・コンテナ技術の歴史と概要についてしっかり書かれていて、 非常に参考になりました。定期的に読み直したい内容です。
以下、適当にDocker周りの備忘録を適当にまとめていきます。
Docker の Install(Mac)
Docker for Macがリリースされているのでこちらを使います。 (数ヶ月前にちょっと触った時はまだプライベートベータでした)
$ brew update && brew upgrade $ brew cask install docker
あとは適当にDocker.appでsetupします。
いろいろ試す
docker pull
超軽量Linux Distributionの"Alpine Linux"を使います。
とりあえず docker search
してみます。
$ docker search alpine NAME DESCRIPTION STARS OFFICIAL AUTOMATED alpine A minimal Docker image based on Alpine Lin... 1475 [OK] anapsix/alpine-java Oracle Java 8 (and 7) with GLIBC 2.23 over... 151 [OK] ...
docker pull
でイメージを落とします
$ docker pull alpine Using default tag: latest latest: Pulling from library/alpine c0cb142e4345: Pull complete Digest: sha256:ca7b185775966003d38ccbd9bba822fb570766e4bb69292ac23490f36f8a742e Status: Downloaded newer image for alpine:latest
Imageの確認
docker images
で一覧確認します。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE rails latest 9df3ff98cd15 9 days ago 840.6 MB nginx latest ba6bed934df2 2 weeks ago 181.4 MB alpine latest ee4603260daa 2 weeks ago 4.803 MB msaraiva/elixir-dev latest 6287638223f3 3 months ago 52.54 MB
いろいろ試しに入れてたので余計なものも出てきてますが、alpineのdocker imageだけ圧倒的に軽いですね。
個別に中身を見たい場合は inspect
を使います
$ docker inspect alpine ... "Architecture": "amd64", "Os": "linux", "Size": 4802964, "VirtualSize": 4802964, ...
hello world
基本型は
docker run <dockerイメージ名> <コマンド>
です。
$ docker run alpine /bin/echo 'hello world' hello world
dockerイメージがローカルに見つからなければ勝手にpullしてくれます。
tag
イメージにtagを付けて管理することができます。
例
$ docker tag alpine:latest shotat/alpine:foo $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE alpine latest ee4603260daa 2 weeks ago 4.803 MB shotat/alpine foo ee4603260daa 2 weeks ago 4.803 MB
コンテナのshellを起動する
単体でshellを起動したい場合は以下のようなコマンドを使います。
$ docker run -it --rm alpine /bin/sh
オプションについて
-it --rm
のオプションを見ていきます。
$ docker run --help | grep -E '(?:--tty|--interactive|--rm)' -i, --interactive Keep STDIN open even if not attached --rm Automatically remove the container when it exits -t, --tty Allocate a pseudo-TTY
-i
: 標準入力を開く-t
: 疑似ttyを割り当てる--rm
: exit後にコンテナを破棄する
-it
を付けないと対話shellをうまく扱えないので必ずつけましょう。
/bin/echo 'hoge'
みたいなことしかしない場合は不要です。
マスコットキャラクターの名前
Dockerのクジラのキャラクターの本名は "Moby Dock" というそうです。
白鯨 - Moby-Dick; or The White Whale - を文字ってるみたいですね。( 白鯨 - Wikipedia )