( hap 「 3-04 イメージ管理用サブコマンド ( 2 ) ーイメージの作成や保存に関するサブコマンド たイメージの情報が表示されていることが分かります ( 3-4-1 ) 。このイメージを指定して 「 un サブコマンドを実行すれば、元のコンテナ (happy_bhabha) と同じ設定やデータを 持つコンテナを生成できます。 >3-4-1 生成したイメージを images サブコマンドで確認した例 $ docke 「 i mages REPOS I TORY ITIY' ー mage ubunt u sueyasu/sshd ubunt u htt pd ubunt u {he Ⅱ 0 ー wo 「旧 Écent os Ⅱ ) •CD•:=:•一 1 ー 1 ーイー一 -9 ・ CO 00 CREATED 1 3 seconds ago 4 days ago 4 days ago 4 days ago 8 days ago 3 weekS ago 4 weekS ago 4 weekS ago IMAGE I D 7ab32CC4415f e9ae3c2 囲 b23 cfb4d58e527b 0641 d0a1 f94a 2682dbdee525 1 d073211C498 0a6ba66e537a e9 信 5d3a0d0e TAG 士 est 士 est 14 . 04 ー 20151109 2 . 2 . 31 1 4 .04 lat est cent 0S7 Pa ュ 3 commit サブコマンドでは、オプションを使ってイメージに作者などの情報を付加でき ます。 - a または ~ au 物 o 「オプションを使うと作者の情報を、 -m または --message オプシ ョンを使うとイメージの説明文を付加できます。 -c または --change オプションを使うと、イメージの各種設定を変更できます。変更で きる設定には、例えば、既定で起動するコマンドなどがあります。同オプションで使用す る Docke 「 f ⅱ e 命令については、 Pa 「 t4 で詳しく紹介します。 commit サブコマンドに指定できる主なオプションは 3-4-2 の通りです。 commit サブコマンドの主なオプション 3-4-2 概要 指定できる値 短縮オプションオプション イメージの作者についての情報を付加 文字列 する イメージの設定を変更する。対応する DockerfiIe に記述 Docke ⅲ厄命令は、 CMD 、 EXTRYPO するのと同じ命令 INT 、 ENV 、 EXPOSE 、 LABEL 、 ON と値 BUILD 、 USER 、 VOLUME 、 WORK D 旧 イメージに指定したメッセージを付加 文字列 --message する commit 処理の間、コンテナを一時停 --pause 止する。既定値は true --autho 「 --change true または false 99
Chapter3-03 イメージ管理用サブコマンド ( 1) ーローカル環境でのイメージ管理サブコマンド イメージ管理用サブコマンド ( 1 ) ーローカル環境でのイメージ管理サブコマンド ここからは、 docke 「コマンドのイメージ管理用サブコマンドについて解説します。ローカル環境へ のイメージの取得と、そこでのイメージ管理のためのサブコマンドに加えて、 Docke 「 Hub に代表さ れるレジストリにイメージを登録するためのサブコマンドなどについても紹介します。 ローカル環境でのイメージ管理に使用するサプコマンド 最初に、ローカル環境でのイメージ管理に使用するサブコマンドを紹介します。イメー ジー覧を表示する images サブコマンド、イメージにリボジトリ名やタグ名を付与する tag サブコマンド、イメージを削除する「 mi サブコマンド、イメージやコンテナの詳細情 報を表示する inspect サブコマンド、イメージの履歴を表示する可 st0 「 Y サブコマンドに ついて解説します。 ローカル環境のイメージの情報を表示する ( ages サプコマンド ) ローカル環境に存在するイメージの情報は、 images サブコマンドで一覧表示できます。 images サブコマンドの基本的な書式は次の通りです。 docker images ーオプションノーリジリノ オプションやリボジトリを指定せすに実行すると、ローカル環境の ( 名前付きの ) リポ ジトリに格納されている全イメージの情報を表示します ( 3-3-1 ) 。 >3-3-1 images サブコマンドによるイメージ情報の表示例 3-03 Pa ュ 3 $ dOCke r i mages REPOS I TORY ・ ubunt u sueyasu/sshd ・ ubunt u htt pd ubunt u hello-world cent OS CO CD CD CREATED 4 days ago 4 days ago 4 days ago 8 days ago 3 weekS ago 4 weekS ago 4 weekS ago IMAGE ID e9ae3C220b23 cfb4d58e527b C641 d0a1 f94a 2682dbdee525 1d073211C498 0a6ba66e537a e9fa5d3a0d0e TAG 士 est 士 est 14.04 ー 20151109 2 . 2 . 31 1 4 . 04 士 est cent 0S7
Docke 「で取り扱うイメージとコンテナ、プロセスの関係 Chapter 3-01 イメージとコンテナの関係 「イメージ」 (Docke 「イメージ ) は、コンテナ作成に必要な情報をまとめたテンプレート です。サイズの大部分をコンテナに割り当てるファイルシステムイメージが占めますが、 そのほかにコンテナ設定に関する情報を含んでいます。例えば、コンテナ環境で使用する ホスト名や、コンテナ作成時に実行するコマンドなどの情報を含んでいます ( 3-1-2 ) 。 イメージに含まれるコンテナ設定情報の例 >3-1-2 " e6e4C4801f676bad4f31b86279b0766d00ed1030 曲 6bdf4e92230 c77e32e8cba" "ContainerConfig" : { false ′ "AttachStderr" false, "AttachStdin" false ′ "AttachStdout" "/bin/sh" " # (nop) [/bin/bash] " Pa ュ 3 コンテナ作成時などに実行する プログラムを指定する記述 "CpuShares " "Cpuset" "Domaxnname "Entrypoint" : null ′ "PATH=/usr/10ca1/sbin : /usr/local/bin : /usr/sbin : /usr/ bin : /sbin : /bin" 'ExposedPorts" : null ′ コンテナ環境で使用する "f4f502dce15c" " Hostname " ホスト名を指定する記述 " 51a9C7C1f8bb2fa19bCd09789a34e63f35abb80044bC10196 " lmage " e304f6634CC582C " "Memory" : 0 ′ 0 ′ "MemorySwap' ( 中略 ) Docke 「は、このイメージに基づいてコンテナを作成します。様々なイメージが、 Docke 「社が運営する「 Docker Hub 」や、それ以外のレジストリで配布されており、ユ 65
( hap e 「 4-02 Docke 「 f ⅱ e の記述やイメージ生成におけるポイント キャッシュされた中間イメージを使用していることを示す表示 4-2-2 $ docker build ーセ mydate test Sending build context セ 0 Docker daemon 2 . 3 99B Step 1 : FROM scratch Step 2 : COPY date /usr/bin/ ー > Using cache ー > 7353622aCCf4 Step 3 : COPY 1 土 bc. SO. 6 / 1 土 b64 / ー > Using cache ー > Ocdd310a9b0b Step 4 : COPY ld - linux - X86-64. so. 2 / 1ib64 / ー > Using cache - > 603fe81e0841 5 : COPY localtime /etc/ S tep ー > ca5f92d3deb8 Removing intermediate container 5d71256907fd step 6 : ENTRYPO 工 NT /usr/bin/date ー > Running in 5d5b5932bad8 ー > 641e75810569 Removxng intermediate container 5d5b5932bad8 Successfu11y built 641e75810569 Enter キャッシュされた中間イメージ を使用していることを示す表示 Pa ュ 4 キャッシュされている中間イメージを使うことで、作業用コンテナの作成や削除、作業 用コンテナ内での処理などを重複して実施する必要がなくなり、イメージ生成にかかる時 間やシステム負荷を削減できます。このように中間イメージの再利用は一般に好ましいも のですが、ソフトウェアバッケージの更新作業のように、実行するのは同じコマンドであ っても実行タイミングによって異なる結果が得られる作業を指示する場合は、中間イメー ジを再利用したくないこともあります。 中間イメージを使わすにイメージを生成させるには、 buil d サブコマンドに「 --no- cache 」というオプションを指定します。 1 / 9
Chapter3-03 イメージ管理用サブコマンド ( D ーローカル環境でのイメージ管理サブコマンド 3-3-7 histo 「 y サブコマンドによるイメージの作成履歴表示例 $ docke 「 history h 量 pd : 2.2.31 I MAGE CREATED 2682dbdee525 8 days ago 35451452479a 8 days ago 23cd8bb7b58d 8 days ago 77af6f828C29 8 days ago 8 068a2e4a594b days ago 619b1fbd2bad 8 days ago 58C7131bda80 8 days ago 8a 間 e63ab529 8 days ago 0e173b4b5dac 3 weeks ago 138f124efe4e 3 weekS ago 3 97C8b0468f2e weekS ago 339eca2d4ca7 3 weekS ago dlf66aef36c9 3 weekS ago d0 ca40 da9e35 3 weekS ago CREATED BY SIZE /b i n/sh -c # (nop) CMD [ " h 量ー fo 「 eg 「 0 凵記 " ] /b i n/sh -c # (nop) EXPOSE 80 汽 cp /bin/sh -c #(nop) COPY f Ⅱ e : f465a45ed4146a281 1 35 B /b i n/sh -c bu Ⅱ dDeps: ' ca-cert i f icates cu 1 7 . 86 MB /b i n/sh -c # (nop) ENV HTTPD-BZ2-lJRL:https://lt'l 0 B /b i n/sh -c # (nop) ENV HTTPD-VERSION:2.2.31 0 B -c gpg ー -keyse rve 「 ha. P00 に sks-keyse 「 /b i n/sh 1 42 . 7 kB /b i n/sh -c apt-get update & & apt-get i nsta Ⅱ 41 . 06 MB /b i n/sh -c # (nop) WORKDIR /us 「川 cca I/apache2 0 B /b i n/sh -c mkdi 「 -p "$HTTPD-PREFIX" & & chown 0 B /b i n/sh -c # (nop) ENV PATH: ん S「川 cca l/sb i n: ん 0 B /b i n/sh -c # (nop) ENV HTTPD-PREFIX:/usr/l oc 引 0 B /b i n/sh -c # (nop) CMD C"/bi n/bash"] 0 B /bin/sh -c #(nop) ADD f Ⅱ e : 5f0fCa122586fe4ea7 125.1 MB COMMENT Pa ュ 3 FIMAGE 」にはイメージ ID 、 「 CREATED 」には作成日時、 「 CREATED BY 」にはイメ ージが作られるきっかけとなったコマンド、「 S E 」にはイメージのサイズ、 「 COMMENT 」にはイメージに設定されているコメントが表示されます。 イメージ旧は ] 2 バイト長の短縮版が表示されます。 64 バイト長の完全なイメージ ID を表示するには、 ~ no - t 「 unc オプションを指定します。 ⅱ isto 「 y サブコマンドに指定できる主なオプションは、 3-3-8 の通りです。 history サブコマンドに指定できる主なオプション 3-3-8 無し 指定できる値 短縮オプション オプション 概要 サイズや日付を人が読みやすい形式で t 「 ue または f 引 se 表示する。既定値は t 「 ue t 「 ue または false 情報を切り詰めずに表示する true または false イメージ ID だけを表示する --human --no-trunc --quiet 9 /
( hap e 「 3-04 イメージ管理用サブコマンド ( 2 ) ーイメージの作成や保存に関するサブコマンド 配置しておく必要があります。 Git リポジトリの指定には、 「 http://」や「 https://」と いったスキームも使用できます。 また、「 Git リポジトリの IJ 日 L # [ ブランチ名またはタグ名 ] [ : ディレクトリ ] 」の形式で、 ブランチ名やタグ名、ディレクトリを指定することもできます。ブランチ名やタグ名を省 略した場合には maste 「ブランチが、ディレクトリを省略した場合には、ルートディレク トリが指定されます。ディレクトリは、ルートティレクトリからの相対パスで指定します。 例えば、 newb 「 anch というブランチの / docke 「というディレクトリに Docke 「 file などを 管理している場合は、「 git: 〃 example.com/sample.git#newb 「 anch:docke 「」のよう に Git リボジトリを指定します。 bu ⅱ d サブコマンド実行時には、中間イメージが作成される「ステップ」ことに、実行し たコマンドや作成したイメージの旧、作業用コンテナの旧などが表示されます ( 3-4-3 ) 。 こうした情報を表示させたくない場合には、 - q または一 quiet オプションを指定します。 bu ⅱ d サブコマンドによるイメージ作成時に表示される情報の例 3-4-3 Pa ュ 3 $ docke 「 bu i 旧 -t my i mage : vl . 0 /home/sueyasu/newi mage bend i ng bu i 旧 cont ext 士 0 Docke 「 daemon 2.048 kB St ep 1 : FROM ubuntu: 14.04 ー > 1d073211C498 St ep 2 : MA I NTA I NER sueyasu ーー > Running in 250d06d9f32e ー > 7ed32fbb95b2 Removing intermediate containe 「 250d06d9f32e St ep 3 : RIJN g 「 oupadd sueyasu & & use radd -g sueyasu sueyasu ー > Running in 52de44a9f52a ーー > 07379Cf14887 iRemoving inte 「 mediate container 52de44a9f52a ー chpasswd ep 4 : RIJN echo "sueyasu : 士 est ー > Running in 30ef49fd4683 ーー > 99f4b 間 d13b1 Removing intermediate container 30ef49fd4683 St ep 5 ・ RIJN mkd i 「 /home/sueyasu ー〉 Running in e2d297227a21 ーー > cc4d0bbe2ee4 Removing intermediate container e2d297227a21 St ep 6 : RIJN chown sueyasu. sueyasu /home/sueyasu ー〉 Running in 59C232609528 ー〉 1bbcf87bef8d Removing intermediate container 59C232609528 St ep 7 : ENTRYPO I NT /b i n/l og i n ーー > Running in c91fa7f2d72b ーー > 5 間 9 2ae05d Removing inte 「 mediate container c91fa7f2d72b Successfully bui は 5 間 9872ae05d
Pa 3 docke 「コマンドによるイメージ取得とコンテナ稼働 ロ ocke 「サーバーの起動オプション Docke 「サーバーの実体は、 Chapte 「 3-02 で紹介した通り、 (Linux 環境では ) Docke 「 クライアントと同じ docke 「コマンドです。同コマンドを次のように daemon サブコマン ド付きで実行すると Docke 「サーバーとしてサーバーモードで稼働します。サーバーモー ドの docke 「コマンドは、ホスト環境の各種リソースを管理する関係上、管理者権限で実 行する必要があります。 $ sudo docker daemon Enter daemon サブコマンドには 3-11-2 のようなオプションを指定できます。これらのオプ ションを利用することで、 Docke 「サーバーの動作を制御できます。 >3-11-2 daemon サブコマンドに指定できる主なオプション 指定できる値 オプション 短縮オプション 指定したリモート APII こ CORS (Cross-O 「 igin Re source Sharing) ヘッダをセットする。既定値は リモート API の URL CO 日 S 無効。 IJ 日 L はカンマ区切りで指定する。 URL に " * " を指定するとすべてのリモート API が対象と なる コンテナ群に既存のネットワークプリッジを割り当 てる。 " none " を指定するとコンテナのネットワーク 接続を無効化する 動的生成されるブリッジ (dockerO) に指定した CIDR 記法の IP アドレスを割り当てる。 - b オプショ ンとは排他 デバッグモードを有効化する。既定値は f 引 se サーバーモード (daemon モード ) を有効化する。 既定値は f se 。同オプションは近々廃止予定 コンテナのデフォルトゲートウェイを指定する。指 定する lPv4 アドレスはブリッジのサブネットに属 するものでなければならない コンテナの IPv6 でのデフォルトゲートウェイを指 定する コンテナの既定資源設定を指定する。設定は limits. conf の書式で行う レガシーなレジストリへのアクセスを禁止するかど うかを指定する。既定値は f se 次ページへ続く 無し —api-co 「 s-header ブリッジ名 --b 「 idge -b し し しし 無 9 無無無 lPv4 アドレス t 「 ue または false t 「 ue または false --bip --debug --daemon lPv4 アドレス --default-gateway --default- gateway-v6 --default-ulimit --disable-legacy- registry lPv6 アドレス 資源設定 t 「 ue または f 引 se 無し 1 5 イ
( hapte 「 5-02 DOCke 「 Compose を用いた複数コンテナの連携管理 ページ上方の「 VisuaIize 」をクリックしてから表示されるメニューを選択することで、 5-2-14 や 5-2-15 のようなさまざまな可視化が可能になります。 5-2-14 は旧アドレスか らアクセス元の地域を分析して、アクセス元の地域別にアクセス数を世界地図上に表現し たものです。 5-2-15 は Web フラウサ ( ユーザーエージェント ) 別のアクセス数を棒グラ フで表現したものです。 5-2-14 アクセスログの情報を kibana で可視化した例 ( その 1 ) 膕 V 旧 li 記 - 灯 b 第旧、 ←こ 192.1 0146 1 れいⅲは戸 I 気 , にれ - 飜、、 e 5 を飜己 1 -- Ⅲ : ー ana G ′村を′ョれ d 0 一 OC 聞 0 第・悼、 Pa ュ 5 A F R ー C A ・、物 4 物 0 : 、 A N ー A R C 1 ー C A アクセスログの情報を kibana で可視化した例 ( その 2 ) 5-2-15 物Ⅵ 3 を・灯わ卍い ←ー、 0 : を一 921 ℃ 146 当い ーー ana 0 ー物 04 れ第、 ーれ e に 5 buckets A00 0 ・浦 ◆ AOd m ・紀、 PAOd 駅応、に、 0 、 221
part 4 ロ ockerfile からの イメージ生成と プライベートレジストリの活用 ここでは「 Docke 「 f ⅱ e 」という設定ファイルに基づく イメージ生成方法について解説します。コンテナをカ スタマイズしてイメージを生成する方法に比べると、 Docke ⅲを使ったイメージ生成には、いつでも同じ 構成のイメージを迅速に作成できるという利点があり ます。また、生成したイメージを登録・配布できるプ ライベートレジストリの構築方法についても解説しま す。
Pa 3 docke 「コマンドによるイメージ取得とコンテナ稼働 作をしたりといった作業が可能になります ( 3-6-3 ) 。 >3-6-3 - it オプションを指定して実行したコンテナでインタラクティブな操作をしている様子 「00士@4e520b066d35 : / # に /etc $ docker 代旧 - i t ubuntu adduse 「 . conf dltermtives bash. bash 「 c rat*x-cnwiet i 6 bindresvport . blacklist c 「 ( - 県ィ斗 (ly crontab debconf . conf deb i an_ve rs i &*fauit del use 「 . conf env i 「 Onment fstab fstab. d ga i . conf g roup gshadow host . c 創罸 host name hosts init.d initramfs-t@ls input rc i nsse rv. conf i 「Ⅳ . c “ ip 「 0 」 t ー ssue i ssue. net kemel 旧 . so. cache 旧 . so. conf 旧 . ) - c ( 仁 6 Ⅱ baud i t . conf locale. alias loca は i login. defs logrotate. conf logrotate. d lsb - 「引 ease mag ー 0 mag ー C. m ー me ma Ⅱ cap mailcap. 0「de「 mime. types mke2 f s. conf n て奴ニ d modu les mtab retmrk net rks nologin nssw i t ch .conf os-re ー ease pam. conf passwd profile 0 「研Ⅱ e 上 p 「 0 士 0C0 ー S p 員ト p ⅵト“ 4 「 e ) c resol v .conf 「 cS. 6 rpc rsys ー og. conf rsyslog. secu ret t y rv ー shadow sudoe rs subuid- subu i d subgid- subg i d she Ⅱ s 第「 s sysct 匚 c 創罸 t l.d st 紀 terminfo 土 imezone ucf . conf cgxiate-nntd-d V ー m upst a rt ー i blkid. conf に「、 . ト」日 y 「00t@4e520b066d35 : / # echo 1 23 123 root@4e520b066d35 : プロセスをバックグラウンド実行する ( 「 un サプコマンド、 - d オプション ) 1 2 イ FOREGROIJND ' CSat Nov 14 14 : 16 : 24.057500 2015 ] [ co 「 e : no 士 ice] Cpid 1 : 士 id 140 間 4828585856 ] AH00094 : Comrnand line: 'httpd -D resum i ng no rma ー ope rat i ons ) conf i gu red - CSat Nov 14 14 : 16 : 24.057314 2015 ] Cmpm-event :not ice] Cpid 1 :t id 140 間 4828585856 ] AH00489 : Apache/2.4.17 (Uni> the ' ServerName' d i rect ive g loba Ⅱ y 士 0 suppress th i s message AH00558 : httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the ' ServerName' d i rect i ve 創 oba Ⅱ y to suppress th i s message AH00558 : httpd: Could no 士 reliably determine the server's fully qualified domain name, using 172.17.0.2. Set $ docke 「「 un ht t pd >3-6-4 イメージ「 httpd 」から作成したコンテナをフォアグラウンド実行した例 ナ実行中はコマンド入力用のコマンドプロンプトが表示されません。 結果になります。仮想コンソールにはプロセスからの出力メッセージが表示され、コンテ 「 httpd 」イメージを取得して、コンテナを - d オプション無しで実行すると 3-6-4 のような 例えば、 Web サーバーソフトウェア「 Apache HTTP サーバー」を既定実行する てしまって困ることがあります。 で実行すると、「 un サブコマンドを実行した仮想コンソールが、そのコンテナに専有され ーバーソフトウェアのように継続稼働するプロセスを動かすコンテナをフォアグラウンド 指定せずに「 un サブコマンドを ( フォアグラウンドで ) 実行して構いません。しかし、サ インタラクティブな操作を必要としないコンテナを実行する場合は、特にオプションを