Closed wbern closed 5 years ago
Hi @wbern, thanks for your question.
I don't have anything besides amd64 architecture available, so I can't be 100% certain. Operating systems usually come in different prebuilt versions for different cpu architectures. For alpine, the base OS for this image, a different baseimage is available (lsiobase/alpine.armhf instead of just lsiobase/alpine) so I can only assume there are differences. I can't tell you why building it yourself would work without you changing that. It's possible docker has a certain convention that checks if a -.armhf
is available and uses that when using the armhf docker version.
I will look if I can make an armhf version available but will have to rely on people like you to report back if it actually works or not until I can think of something else.
Sounds good to me. I think indeed it's not more than that.
I have created Dockerfile.armhf
which has lsiobase/alpine:arm32v7-3.10
as its baseimage instead of just plain old lsiobase/alpine:3.10
. I hope that is enough, can you perhaps verify ? I would imagine just running docker pull cpoppema/docker-flexget
and recreating your container would do the trick.
So it seems like just creating those files isn't enough (if only right).
Docker Hub doesn't actually support automated multi-arch builds at this time. I can cross-build amd64 (which is the default architecture) and arm32v7 on my own computer and push them to Docker Hub manually. I can now create a "manifest" which automatically translates cpoppema/docker-flexget:latest
to cpoppema/docker-flexget:arm32v7-latest
if you pull it on an arm32v7 machine.
The baseimage lsiobase/alpine:3.10
that I use already has this manifest and that is the reason why building it yourself makes it work.
Comparing it now:
$ docker manifest inspect cpoppema/docker-flexget:latest
{
"schemaVersion": 2,
"mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
"manifests": [
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 2202,
"digest": "sha256:4781cd51297baf7b48f2cd2229a205a1a84c77a5b568a9eda4283333e1b3b55e",
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 2201,
"digest": "sha256:01a5fbe0bafbe94a45d496589aa6c082e52b16638e92e613236f21d412c00326",
"platform": {
"architecture": "arm",
"os": "linux"
}
},
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 2201,
"digest": "sha256:a8d79df03a50055ce79a17469b6a45d14547ca256060f04b27799f2499baf3df",
"platform": {
"architecture": "arm64",
"os": "linux"
}
}
]
}
Looks pretty much the same as the base image's :smile:
$ docker manifest inspect lsiobase/alpine:3.10
{
"schemaVersion": 2,
"mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
"manifests": [
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 947,
"digest": "sha256:0b9253809fbec0e6b44b8c0430d48747df9d090e816188838a146ea961f7e6f8",
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 947,
"digest": "sha256:ddba2f82d4234e41d70e72963be6f2da1ac163fe12304cb144bd5121e68405f4",
"platform": {
"architecture": "arm",
"os": "linux"
}
},
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 947,
"digest": "sha256:9f058f9b73f6e91e57d1f0e16091bd3336cb7879428d26e66db683f066ac7b08",
"platform": {
"architecture": "arm64",
"os": "linux",
"variant": "v8"
}
}
]
}
I am getting this if I want to use this image:
If I just copy your dockerfile and build the image myself on the pi, it works fine. I'm not very experienced with docker so..