Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

arm64v8 cannot run at amd64 machine after binfmt #343

Closed
daixiang0 opened this issue Sep 17, 2020 · 2 comments
Closed

arm64v8 cannot run at amd64 machine after binfmt #343

daixiang0 opened this issue Sep 17, 2020 · 2 comments
Labels

Comments

@daixiang0
Copy link

I can run arm64v8/centos, while fail with arm64v8/golang:

$ docker run --privileged linuxkit/binfmt:v0.7
$ docker run -it arm64v8/centos bash
[root@533bc0765703 /]#
$ docker run -it arm64v8/golang bash
Unable to find image 'arm64v8/golang:latest' locally
latest: Pulling from arm64v8/golang
docker: no matching manifest for linux/amd64 in the manifest list entries.
See 'docker run --help'.

Compare manifest info:

$ DOCKER_CLI_EXPERIMENTAL=enabled docker manifest inspect arm64v8/centos
{
	"schemaVersion": 2,
	"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
	"config": {
		"mediaType": "application/vnd.docker.container.image.v1+json",
		"size": 2180,
		"digest": "sha256:9d5bccb1776bd298334234395ecd1e33ec7050e8ee3fc821daed7c484588b17b"
	},
	"layers": [
		{
			"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
			"size": 75431202,
			"digest": "sha256:deeb10e3e252e0ed6520bbaa2570413f3c1517305f8f397c3d59ae791ac23678"
		}
	]
}
$ DOCKER_CLI_EXPERIMENTAL=enabled docker manifest inspect arm64v8/golang
{
   "schemaVersion": 2,
   "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
   "manifests": [
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 1794,
         "digest": "sha256:7917efe5bfb64dc7025a198eac8574e8e7a09ee25850930a4e122057549d4cca",
         "platform": {
            "architecture": "arm64",
            "os": "linux",
            "variant": "v8"
         }
      }
   ]
}

@wglambert
Copy link

Looks like the amd64 build is having some issues that's affecting the manifest list https://doi-janky.infosiftr.net/job/multiarch/job/amd64/job/golang/

warning: no images expected to push for "amd64/golang:1.15.2-windowsservercore"
warning: no images expected to push for "amd64/golang:1.15.2-nanoserver"
warning: no images expected to push for "amd64/golang:1.14.9-windowsservercore"
warning: no images expected to push for "amd64/golang:1.14.9-nanoserver"
. . .
Putting amd64/golang:1-windowsservercore
time="2020-09-17T05:20:13Z" level=fatal msg="all entries were skipped due to missing source image references; no manifest list to push"
warning: failed putting amd64/golang:1-windowsservercore, skipping (collecting errors)
warning: no images expected to push for "amd64/golang:1.15.2-nanoserver"
. . .
error: failed putting groups:
- amd64/golang:1-windowsservercore: exit status 1
- amd64/golang:1-nanoserver: exit status 1

Other images are having the same issue with their amd64 build https://doi-janky.infosiftr.net/job/multiarch/job/amd64/
image

The way that this affects the image pulling of non-amd64 architectures is kind of explained in docker-library/official-images#3835

manifest lists under the library are "eventually consistent" -- once all arches complete successfully, the manifest lists get updated to include all the relevant sub-architectures.

@tianon
Copy link
Member

tianon commented Sep 17, 2020

This is actually a duplicate of #304; see especially #304 (comment). Try arm64v8/golang:buster and you should get a more successful result.

@tianon tianon closed this as completed Sep 17, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants