docker inspect
コマンドを使うことでImageの状態を知ることができるが、 docker history
コマンドを使うとImageに対してそれまでに加えてきた内容を知ることができる。
例としてOfficialのtomcatをダウンロードしてみる。 docker history
コマンドはImageがローカルにダウンロード済みである必要がある。
$ docker pull tomcat:latest
$ docker history tomcat IMAGE CREATED CREATED BY SIZE cef95d42a67e 6 days ago /bin/sh -c #(nop) CMD [catalina.sh run] 0 B 2f84c3ab2483 6 days ago /bin/sh -c #(nop) EXPOSE map[8080/tcp:{}] 0 B be11664c34d5 6 days ago /bin/sh -c set -x && curl -fSL "$TOMCAT_TGZ_ 13.09 MB df8dde32ea2f 2 weeks ago /bin/sh -c #(nop) ENV TOMCAT_TGZ_URL=https:// 0 B 2c367253b67d 2 weeks ago /bin/sh -c #(nop) ENV TOMCAT_VERSION=8.0.21 0 B 5e5452f6e864 3 weeks ago /bin/sh -c #(nop) ENV TOMCAT_MAJOR=8 0 B e00f3a75a41b 3 weeks ago /bin/sh -c gpg --keyserver pool.sks-keyserver 109.4 kB 8b95d6fd0d61 3 weeks ago /bin/sh -c #(nop) WORKDIR /usr/local/tomcat 0 B 5d06ddb41dfc 3 weeks ago /bin/sh -c mkdir -p "$CATALINA_HOME" 0 B 23d0b073332c 3 weeks ago /bin/sh -c #(nop) ENV PATH=/usr/local/tomcat/ 0 B 2a6c03336c25 3 weeks ago /bin/sh -c #(nop) ENV CATALINA_HOME=/usr/loca 0 B 7f628ae52eec 3 weeks ago /bin/sh -c apt-get update && apt-get install 164.5 MB 7428e160408e 3 weeks ago /bin/sh -c #(nop) ENV JAVA_DEBIAN_VERSION=7u7 0 B 22df52eafda5 3 weeks ago /bin/sh -c #(nop) ENV JAVA_VERSION=7u75 0 B 4d0d7acdf9db 3 weeks ago /bin/sh -c apt-get update && apt-get install 676.1 kB b7820d1ee4ee 3 weeks ago /bin/sh -c apt-get update && apt-get install 44.34 MB 65688f7c61c4 3 weeks ago /bin/sh -c #(nop) CMD [/bin/bash] 0 B d338bb63f151 3 weeks ago /bin/sh -c #(nop) ADD file:f9472dcedb28e889f7 122.8 MB 511136ea3c5a 22 months ago 0 B
コマンドが長い場合は省略されてしまうので、その場合は --no-trunc
オプションをつけることでコマンドを省略なしで表示できる。
$ docker history --no-trunc tomcat:8.0 IMAGE CREATED CREATED BY SIZE cef95d42a67e5abbc7d9d6b3622e89b1ee74c119253dbb4af1f284de105c39f3 6 days ago /bin/sh -c #(nop) CMD [catalina.sh run] 0 B 2f84c3ab24836342a40c92a64ecf89dccea1c239bcba680d114b7d06ea7df8b5 6 days ago /bin/sh -c #(nop) EXPOSE map[8080/tcp:{}] 0 B be11664c34d591a675d1385ea58021c9d15b5ac0eb27303ba52b5c21d003d2b7 6 days ago /bin/sh -c set -x && curl -fSL "$TOMCAT_TGZ_URL" -o tomcat.tar.gz && curl -fSL "$TOMCAT_TGZ_URL.asc" -o tomcat.tar.gz.asc && gpg --verify tomcat.tar.gz.asc && tar -xvf tomcat.tar.gz --strip-components=1 && rm bin/*.bat && rm tomcat.tar.gz* 13.09 MB df8dde32ea2f80831fb10c5131e29248b7a1d7ffaa2d48b6d7674f4518f4ea3a 2 weeks ago /bin/sh -c #(nop) ENV TOMCAT_TGZ_URL=https://www.apache.org/dist/tomcat/tomcat-8/v8.0.21/bin/apache-tomcat-8.0.21.tar.gz 0 B 2c367253b67d0ef468d6f73ef28afa67c6de6e639cf8b8450685334a0c9261ff 2 weeks ago /bin/sh -c #(nop) ENV TOMCAT_VERSION=8.0.21 0 B 5e5452f6e864a3e28ce424ba7fd7d62e35a5a5a9240e1c489f3e6c41df5abf5a 3 weeks ago /bin/sh -c #(nop) ENV TOMCAT_MAJOR=8 0 B e00f3a75a41b17a6c5b0ad9d0b179442abb03bdaedf96f3e335d5265602b1188 3 weeks ago /bin/sh -c gpg --keyserver pool.sks-keyservers.net --recv-keys 05AB33110949707C93A279E3D3EFE6B686867BA6 07E48665A34DCAFAE522E5E6266191C37C037D42 47309207D818FFD8DCD3F83F1931D684307A10A5 541FBE7D8F78B25E055DDEE13C370389288584E7 61B832AC2F1C5A90F0F9B00A1C506407564C17A3 79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED 9BA44C2621385CB966EBA586F72C284D731FABEE A27677289986DB50844682F8ACB77FC2E86E29AC A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23 109.4 kB 8b95d6fd0d61c61b9ad7cc87d8be1e43da58a83d4379ab5d818385e87c68d56b 3 weeks ago /bin/sh -c #(nop) WORKDIR /usr/local/tomcat 0 B 5d06ddb41dfc068e783871f409d28eaca741043953780c55fc03b199f9fb1504 3 weeks ago /bin/sh -c mkdir -p "$CATALINA_HOME" 0 B 23d0b073332ce84e6015cd5884d4ddf7c178c2902145edaad1d938dfa502d85e 3 weeks ago /bin/sh -c #(nop) ENV PATH=/usr/local/tomcat/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 0 B 2a6c03336c25d7e548798577be2fcd322cd4599ff949bc78d1d42c8f7f1afc59 3 weeks ago /bin/sh -c #(nop) ENV CATALINA_HOME=/usr/local/tomcat 0 B 7f628ae52eec9df9891177702bbd3c44b8442a5f087c69d660b21b688f1bc5fb 3 weeks ago /bin/sh -c apt-get update && apt-get install -y openjdk-7-jre-headless="$JAVA_DEBIAN_VERSION" && rm -rf /var/lib/apt/lists/* 164.5 MB 7428e160408efe1e37d0710fba2a1777f7beab5411014eabde3a31c9980d3288 3 weeks ago /bin/sh -c #(nop) ENV JAVA_DEBIAN_VERSION=7u75-2.5.4-2 0 B 22df52eafda5575c11112c744cda32d60c2ac9b70f97def69ad9f1355cb5d40b 3 weeks ago /bin/sh -c #(nop) ENV JAVA_VERSION=7u75 0 B 4d0d7acdf9dbc175ba89f5a32b08c78a7659ba988c276a92f39dc83d69818e69 3 weeks ago /bin/sh -c apt-get update && apt-get install -y unzip && rm -rf /var/lib/apt/lists/* 676.1 kB b7820d1ee4ee3aaad7d45bde22f0e2c79e97097384cd4321284a39c04bb4a1f4 3 weeks ago /bin/sh -c apt-get update && apt-get install -y --no-install-recommends ca-certificates curl wget && rm -rf /var/lib/apt/lists/* 44.34 MB 65688f7c61c4e8f3cce67714991d5a6d36d6bb3890e439cfcb5450db5ae9d530 3 weeks ago /bin/sh -c #(nop) CMD [/bin/bash] 0 B d338bb63f1516c639f195833750da8b5b9bbf53a1124a8275088406f3a03724e 3 weeks ago /bin/sh -c #(nop) ADD file:f9472dcedb28e889f7253817dcd6a0412c51a3fe0dc0fbea98041e426fea6ce0 in / 122.8 MB 511136ea3c5a64f264b78b5433614aec563103b4d4702f3ba7d4d2698e22c158 22 months ago 0 B
公式サイトや他のImageでDockerfileが公開されていないケースでも、Historyを見ることで色々と参考にすることができるだろう。