目次などの情報は下記にある。
コンテナとは、本書にある通り、〈アプリケーションを依存対象とともにカプセル化したもの〉である。 では、仮想マシン(Virtual Machine, VM)と何が違うのか。どちらも、 〈隔離された OS の環境を持ち、その中でアプリケーションを起動させることができる。〉しかし、 コンテナは、ホスト OS と資源を共有するので VM より効率的だ。ただコンテナは VM より隔離の度合いが弱く、 コンテナの分離機能がどの程度か見極めないといけない、というのがこの本の最初に書かれている。
面白いのは、pp.7-8 にある「運送への比喩」というコラムである。 コンピュータコンテナ技術を運送コンテナにたとえるのは、非常にわかりやすい。 そして、図 1-3 に掲載されているのは、1940 年、イングランドのブリストルで働く港湾労働者、 というキャプションがつけられた写真だ。この写真で見える荷物は、コンテナではなく、 吊り上げられたパレットに何十個もの木箱が載せられた積み荷だ。 今、大きな港でこんな光景は見慣れないだろう。それほどまでに、運送のコンテナ技術は画期的だったと思う。
Docker というコンテナ管理ソフトウェアがあることは聞いていたが、
私が使っているコンピュータは Windows 10 の Home Edition
だ。おまけに機種も古い。 Widnwos 7 から使っているほどだ。 OS が Windows 8,
Windows 8.1, Windows 10 とバージョンアップしていくのにつれて、
かろうじて対応できたマシンだから、非力だ。だから Docker
など動くことはあるまい、 と思っていた。ところが、私のコンピュータでも
Docker が動いた。下記の通り実行しただけだ。
https://qiita.com/zaki-lknr/items/db99909ba1eb27803456
なお、私の環境では既に WSL2
をインストールしていて稼働している環境だったが、特に問題はなかった。
環境は下記のとおりである。
PS C:> docker version Client: Cloud integration: 1.0.14 Version: 20.10.6 API version: 1.41 Go version: go1.16.3 Git commit: 370c289 Built: Fri Apr 9 22:49:36 2021 OS/Arch: windows/amd64 Context: default Experimental: true Server: Docker Engine - Community Engine: Version: 20.10.6 API version: 1.41 (minimum version 1.12) Go version: go1.13.15 Git commit: 8728dd2 Built: Fri Apr 9 22:44:56 2021 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.4.4 GitCommit: 05f951a3781f4f2c1911b05e61c160e9c30eaa8e runc: Version: 1.0.0-rc93 GitCommit: 12644e614e25b05da6fd08a38ffa0cfe1903fdec docker-init: Version: 0.19.0 GitCommit: de40ad0 PS C:> docker-compose version docker-compose version 1.29.1, build c34c88b2 docker-py version: 5.0.0 CPython version: 3.9.0 OpenSSL version: OpenSSL 1.1.1g 21 Apr 2020
3章は「はじめの一歩」である。ここで紹介されていたコマンドを実行し、下記の結果を得た。
PS C:> docker run debian echo "Saluton, Mondo" Unable to find image 'debian:latest' locally latest: Pulling from library/debian d960726af2be: Pull complete Digest: sha256:acf7795dc91df17e10effee064bd229580a9c34213b4dba578d64768af5d8c51 Status: Downloaded newer image for debian:latest Saluton, Mondo
あいさつ文を除き、p.19 の通りである
p.21 では、<Docker がコンテナをホストから指定するときの名前は、ランダムな形容詞に有名な (科学者|エンジニア|ハッカー)の名前をつなげたものになる>と解説されている。 私が見てみたら、affectionate_faraday だった。Faraday はわかる。 他にも過去に作られたコンテナの名前を調べると、nostalgic_noether や、 crazy_khayyam があった。 noether は誰だろう。数学者のエミー・ネーターのことだろうか。 khayyam もわからなかった。ウマル・ハイヤームのことらしい。
さて、p.25 の Dockerfile を書き込んで docker build コマンドを実行するが、うまくいかない。
PS C:> docker build -t test/cowsay-dockerfile .
[+] Building 0.7s (5/5) FINISHED
=> [internal] load build definition from Dockerfile 0.1s
=> => transferring dockerfile: 116B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/debian:wheezy 0.0s
=> CACHED [1/2] FROM docker.io/library/debian:wheezy 0.0s
=> ERROR [2/2] RUN apt-get update && apt-get install -y cowsay fortune 0.4s
------
> [2/2] RUN apt-get update && apt-get install -y cowsay fortune:
#5 0.409 E: Method http has died unexpectedly!
#5 0.409 E: Sub-process http received a segmentation fault.
#5 0.409 E: Method http has died unexpectedly!
#5 0.409 E: Sub-process http received a segmentation fault.
------
executor failed running [/bin/sh -c apt-get update && apt-get install -y cowsay fortune]: exit code: 100
Dockerfile の FROM debian:wheezy という行を FROM debian に書き直したら、 正常に終了した。調べてみたら、wheezy は長期サポート (Long Term Support、LTS) を受けられるが、それでもサポートは 2018 年 5 月末までだったのだ。
それはともかく、cowsay はすばらしい冗談コマンドだ。
4章はDockerの基礎である。しかし、私はこの章は飛ばした。Docker
のドキュメントは下記の Web サイト
https://docs.docker.com/engine/reference/builder/
にあるということを確認しただけである。
5章では、Python での Flask の利用を例に、開発で Docker を利用する方法を解説している。 私も同じようにやってみようと思ったのだが、うまくいかない。
PS C:> docker run -d -p 5000:5000 identidock 6cd4d0736669e4c736e73da4e9e8374e00a944461e14a1c86561a1a228cea781 PC C:> curl localhost:5000 curl: (7) Failed to connect to localhost port 5000: Connection refused
ここであきらめた。
書 名 | Docker |
著 者 | Adrian Mouat |
発行日 | 2016 年 8 月 12 日(初版第1刷) |
発行元 | オライリー・ジャパン |
定 価 | 3,600円(本体) |
サイズ | 判 |
ISBN | 978-4-87311-776-8 |
その他 | 越谷市立図書館で借りて読む |
まりんきょ学問所 > コンピュータの部屋 > コンピュータの本 > 開発環境 > Docker