Docker 이미지를 받아서 사용하다보면 은근, 해당 이미지가 어떻게 생성 됐는지, 어떤 명령어를 사용했는지 확인해봐야 할때가 있습니다. Docker 에서는 history 명령어를 이용해 해당 이미지가 어떤 명령어를 이용해 이미지가 생성 됐는지 확인할 수 있는 기능을 제공합니다.
저 같은 경우는 제대로 작동되지 않는 빌드된 이미지에 대한 디버깅용으로 사용을 많이 했었습니다.
✅ docker history 명령어
기본 명령어
docker history 명령어를 이용해 이미지 명과 태그를 명시하면 이미지 history 결과를 볼 수 있습니다.
docker history <이미지명:태그>
history 명령어의 수행결과로 각 이미지 레이어 별로 사용된 명령어 , 레이어의 크기 , 생성시각 , comment 들을 확인할 수 있습니다.
❯ docker history tomcat:9.0.64-jre17 IMAGE CREATED CREATED BY SIZE COMMENT 4bd7bf12a7b2 2 years ago /bin/sh -c #(nop) CMD ["catalina.sh" "run"] 0B <missing> 2 years ago /bin/sh -c #(nop) EXPOSE 8080 0B <missing> 2 years ago /bin/sh -c set -eux; nativeLines="$(catalin… 0B <missing> 2 years ago /bin/sh -c set -eux; apt-get update; xargs… 7.66MB <missing> 2 years ago /bin/sh -c #(nop) COPY dir:01f4a9545d8608ec4… 18.6MB <missing> 2 years ago /bin/sh -c #(nop) ENV TOMCAT_SHA512=38392b6… 0B <missing> 2 years ago /bin/sh -c #(nop) ENV TOMCAT_VERSION=9.0.64 0B <missing> 2 years ago /bin/sh -c #(nop) ENV TOMCAT_MAJOR=9 0B <missing> 2 years ago /bin/sh -c #(nop) ENV GPG_KEYS=48F8E69F6390… 0B <missing> 2 years ago /bin/sh -c #(nop) ENV LD_LIBRARY_PATH=/usr/… 0B <missing> 2 years ago /bin/sh -c #(nop) ENV TOMCAT_NATIVE_LIBDIR=… 0B <missing> 2 years ago /bin/sh -c #(nop) WORKDIR /usr/local/tomcat 0B <missing> 2 years ago /bin/sh -c mkdir -p "$CATALINA_HOME" 0B <missing> 2 years ago /bin/sh -c #(nop) ENV PATH=/usr/local/tomca… 0B <missing> 2 years ago /bin/sh -c #(nop) ENV CATALINA_HOME=/usr/lo… 0B <missing> 2 years ago /bin/sh -c echo Verifying install ... &&… 0B <missing> 2 years ago /bin/sh -c #(nop) ENV JAVA_HOME=/opt/java/o… 0B <missing> 2 years ago /bin/sh -c set -eux; ARCH="$(dpkg --prin… 140MB <missing> 2 years ago /bin/sh -c #(nop) ENV JAVA_VERSION=jdk-17.0… 0B <missing> 2 years ago /bin/sh -c apt-get update && DEBIAN_FRON… 50MB <missing> 2 years ago /bin/sh -c #(nop) ENV LANG=en_US.UTF-8 LANG… 0B <missing> 2 years ago /bin/sh -c #(nop) CMD ["bash"] 0B <missing> 2 years ago /bin/sh -c #(nop) ADD file:20805b983efd5443e… 69.2MB
명령어 모든 내용 보기 --no-trunc
--no-trunc 옵션을 추가해주면 위에서 생략된 명령어 내용들을 전부 보여줍니다.
docker history <이미지명:태그> --no-trunc
❯ docker history tomcat:9.0.64-jre17 --no-trunc IMAGE CREATED CREATED BY SIZE COMMENT sha256:4bd7bf12a7b2aee63bf3a8de4ff152b5344226fbb0a7c2fe71fd8af4e86b2b1a 2 years ago /bin/sh -c #(nop) CMD ["catalina.sh" "run"] 0B <missing> 2 years ago /bin/sh -c #(nop) EXPOSE 8080 0B <missing> 2 years ago /bin/sh -c set -eux; nativeLines="$(catalina.sh configtest 2>&1)"; nativeLines="$(echo "$nativeLines" | grep 'Apache Tomcat Native')"; nativeLines="$(echo "$nativeLines" | sort -u)"; if ! echo"$nativeLines" | grep -E 'INFO: Loaded( APR based)? Apache Tomcat Native library' >&2; thenecho >&2 "$nativeLines"; exit 1; fi 0B <missing> 2 years ago /bin/sh -c set -eux; apt-get update; xargs -rt apt-get install -y --no-install-recommends < "$TOMCAT_NATIVE_LIBDIR/.dependencies.txt"; rm -rf /var/lib/apt/lists/* 7.66MB <missing> 2 years ago /bin/sh -c #(nop) COPY dir:01f4a9545d8608ec42f549bf2df78d3acf563ff4180c7fd9ac753fba68a0b6df in /usr/local/tomcat 18.6MB <missing> 2 years ago /bin/sh -c #(nop) ENV TOMCAT_SHA512=38392b651fabe706fb0524c52849601299494178010bb8077af383232c20bbbda1aec4ab8898adb2cc37c07583ff0e9d3c7038ce55a22bc68c3641641b47fd1a 0B <missing> 2 years ago /bin/sh -c #(nop) ENV TOMCAT_VERSION=9.0.64 0B <missing> 2 years ago /bin/sh -c #(nop) ENV TOMCAT_MAJOR=9 0B <missing> 2 years ago /bin/sh -c #(nop) ENV GPG_KEYS=48F8E69F6390C9F25CFEDCD268248959359E722B A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 0B <missing> 2 years ago /bin/sh -c #(nop) ENV LD_LIBRARY_PATH=/usr/local/tomcat/native-jni-lib 0B <missing> 2 years ago /bin/sh -c #(nop) ENV TOMCAT_NATIVE_LIBDIR=/usr/local/tomcat/native-jni-lib 0B <missing> 2 years ago /bin/sh -c #(nop) WORKDIR /usr/local/tomcat 0B <missing> 2 years ago /bin/sh -c mkdir -p "$CATALINA_HOME" 0B <missing> 2 years ago /bin/sh -c #(nop) ENV PATH=/usr/local/tomcat/bin:/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 0B <missing> 2 years ago /bin/sh -c #(nop) ENV CATALINA_HOME=/usr/local/tomcat 0B <missing> 2 years ago /bin/sh -c echo Verifying install ... && echo java --version && java --version && echo Complete. 0B <missing> 2 years ago /bin/sh -c #(nop) ENV JAVA_HOME=/opt/java/openjdk PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 0B <missing> 2 years ago /bin/sh -c set -eux; ARCH="$(dpkg --print-architecture)"; case"${ARCH}"in aarch64|arm64) ESUM='b32bf4e18a0befea32c0ff377da7a1753b91477617a9921ceb3dee6964d2799b'; BINARY_URL='https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.3%2B7/OpenJDK17U-jre_aarch64_linux_hotspot_17.0.3_7.tar.gz'; ;; armhf|arm) ESUM='fda34743f1ad8b629f42773f6519e87d13876d4b10f98b76cd47b1aa9ad18572'; BINARY_URL='https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.3%2B7/OpenJDK17U-jre_arm_linux_hotspot_17.0.3_7.tar.gz'; ;; ppc64el|powerpc:common64) ESUM='257325f38546ce34645f6e8d7e566df401c97a9ae5f107583f9ac71f0f1b04e9'; BINARY_URL='https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.3%2B7/OpenJDK17U-jre_ppc64le_linux_hotspot_17.0.3_7.tar.gz'; ;; s390x|s390:64-bit) ESUM='6790e3995a7fb8db99974d213f750bfd1631bfc0dad9946334be34d7b78fdbee'; BINARY_URL='https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.3%2B7/OpenJDK17U-jre_s390x_linux_hotspot_17.0.3_7.tar.gz'; ;; amd64|i386:x86-64) ESUM='446b1ac5504d51c2ff9b0cccff079be3ce800cf8c3a3f13bab07f2656aa1fd27'; BINARY_URL='https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.3%2B7/OpenJDK17U-jre_x64_linux_hotspot_17.0.3_7.tar.gz'; ;; *) echo"Unsupported arch: ${ARCH}"; exit 1; ;; esac; curl -LfsSo /tmp/openjdk.tar.gz ${BINARY_URL}; echo"${ESUM} */tmp/openjdk.tar.gz" | sha256sum -c -; mkdir -p /opt/java/openjdk; cd /opt/java/openjdk; tar -xf /tmp/openjdk.tar.gz --strip-components=1; rm -rf /tmp/openjdk.tar.gz; 140MB <missing> 2 years ago /bin/sh -c #(nop) ENV JAVA_VERSION=jdk-17.0.3+7 0B <missing> 2 years ago /bin/sh -c apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata curl ca-certificates fontconfig locales binutils && echo"en_US.UTF-8 UTF-8" >> /etc/locale.gen && locale-gen en_US.UTF-8 && rm -rf /var/lib/apt/lists/* 50MB <missing> 2 years ago /bin/sh -c #(nop) ENV LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8 0B <missing> 2 years ago /bin/sh -c #(nop) CMD ["bash"] 0B <missing> 2 years ago /bin/sh -c #(nop) ADD file:20805b983efd5443e34ebdfb7795010e5684eb1ca1ffea30a3e61e0089c0eee8 in / 69.2MB