From 40b08ea4d12fa96f14e34e00d5dc5cfab4e4a6e8 Mon Sep 17 00:00:00 2001 From: Dennis Chen Date: Mon, 9 Apr 2018 10:33:42 +0000 Subject: [PATCH] Dockerbuilder: use the arch info from base image Currently we hardcode the architecture to the `runtime.GOARCH` when building a docker image, this will result in a confusing info if the arch in the base image is different from the one on the host. This PR takes use of the arch data from the base image during the build process, thus we can get consistent arch info between the base image and the finally built image. Signed-off-by: Dennis Chen Upstream-commit: 92b17b10bad1f1788419b70db5d6ed9cdf8d15ef Component: engine --- components/engine/image/image.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/components/engine/image/image.go b/components/engine/image/image.go index 683c3fedd0..7e0646f072 100644 --- a/components/engine/image/image.go +++ b/components/engine/image/image.go @@ -96,6 +96,15 @@ func (img *Image) RunConfig() *container.Config { return img.Config } +// BaseImgArch returns the image's architecture. If not populated, defaults to the host runtime arch. +func (img *Image) BaseImgArch() string { + arch := img.Architecture + if arch == "" { + arch = runtime.GOARCH + } + return arch +} + // OperatingSystem returns the image's operating system. If not populated, defaults to the host runtime OS. func (img *Image) OperatingSystem() string { os := img.OS @@ -157,7 +166,7 @@ func NewChildImage(img *Image, child ChildConfig, platform string) *Image { V1Image: V1Image{ DockerVersion: dockerversion.Version, Config: child.Config, - Architecture: runtime.GOARCH, + Architecture: img.BaseImgArch(), OS: platform, Container: child.ContainerID, ContainerConfig: *child.ContainerConfig,