* [PATCH] automation: set architecture in docker files
@ 2023-11-13 15:57 Roger Pau Monne
2023-11-14 0:10 ` Stefano Stabellini
0 siblings, 1 reply; 6+ messages in thread
From: Roger Pau Monne @ 2023-11-13 15:57 UTC (permalink / raw)
To: xen-devel; +Cc: Roger Pau Monne, Doug Goldstein, Stefano Stabellini
Pass the desired architecture of the image in the FROM instruction if the
image is possibly multi-platform.
This allows using the x86 Dockerfiles on OS X on arm64 hardware.
No functional change intended.
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
I haven't touched the Yocto dockerfile because I'm not sure how it's used.
---
automation/build/alpine/3.18.dockerfile | 2 +-
automation/build/archlinux/current-riscv64.dockerfile | 2 +-
automation/build/archlinux/current.dockerfile | 2 +-
automation/build/centos/7.dockerfile | 2 +-
automation/build/debian/bookworm.dockerfile | 2 +-
automation/build/debian/bullseye-ppc64le.dockerfile | 2 +-
automation/build/debian/buster-gcc-ibt.dockerfile | 2 +-
automation/build/debian/jessie.dockerfile | 2 +-
automation/build/debian/stretch.dockerfile | 2 +-
automation/build/fedora/29.dockerfile | 2 +-
automation/build/suse/opensuse-leap.dockerfile | 2 +-
automation/build/suse/opensuse-tumbleweed.dockerfile | 2 +-
automation/build/ubuntu/bionic.dockerfile | 2 +-
automation/build/ubuntu/focal.dockerfile | 2 +-
automation/build/ubuntu/trusty.dockerfile | 2 +-
automation/build/ubuntu/xenial-xilinx.dockerfile | 2 +-
automation/build/ubuntu/xenial.dockerfile | 2 +-
17 files changed, 17 insertions(+), 17 deletions(-)
diff --git a/automation/build/alpine/3.18.dockerfile b/automation/build/alpine/3.18.dockerfile
index 5d2a69a06010..4ae9cb5e9e30 100644
--- a/automation/build/alpine/3.18.dockerfile
+++ b/automation/build/alpine/3.18.dockerfile
@@ -1,4 +1,4 @@
-FROM alpine:3.18
+FROM --platform=linux/amd64 alpine:3.18
LABEL maintainer.name="The Xen Project" \
maintainer.email="xen-devel@lists.xenproject.org"
diff --git a/automation/build/archlinux/current-riscv64.dockerfile b/automation/build/archlinux/current-riscv64.dockerfile
index abf8e7bf0b88..af75b5c720ce 100644
--- a/automation/build/archlinux/current-riscv64.dockerfile
+++ b/automation/build/archlinux/current-riscv64.dockerfile
@@ -1,4 +1,4 @@
-FROM archlinux
+FROM --platform=linux/amd64 archlinux
LABEL maintainer.name="The Xen Project" \
maintainer.email="xen-devel@lists.xenproject.org"
diff --git a/automation/build/archlinux/current.dockerfile b/automation/build/archlinux/current.dockerfile
index 47e79637a4a6..d974a1434fd5 100644
--- a/automation/build/archlinux/current.dockerfile
+++ b/automation/build/archlinux/current.dockerfile
@@ -1,4 +1,4 @@
-FROM archlinux:base-devel
+FROM --platform=linux/amd64 archlinux:base-devel
LABEL maintainer.name="The Xen Project" \
maintainer.email="xen-devel@lists.xenproject.org"
diff --git a/automation/build/centos/7.dockerfile b/automation/build/centos/7.dockerfile
index 69dcefb2f011..ab450f0b3a0e 100644
--- a/automation/build/centos/7.dockerfile
+++ b/automation/build/centos/7.dockerfile
@@ -1,4 +1,4 @@
-FROM centos:7
+FROM --platform=linux/amd64 centos:7
LABEL maintainer.name="The Xen Project" \
maintainer.email="xen-devel@lists.xenproject.org"
diff --git a/automation/build/debian/bookworm.dockerfile b/automation/build/debian/bookworm.dockerfile
index ae008c8d46e5..ac87778b3972 100644
--- a/automation/build/debian/bookworm.dockerfile
+++ b/automation/build/debian/bookworm.dockerfile
@@ -1,4 +1,4 @@
-FROM debian:bookworm
+FROM --platform=linux/amd64 debian:bookworm
LABEL maintainer.name="The Xen Project" \
maintainer.email="xen-devel@lists.xenproject.org"
diff --git a/automation/build/debian/bullseye-ppc64le.dockerfile b/automation/build/debian/bullseye-ppc64le.dockerfile
index 4de8458445ae..6fdfb6bc2b40 100644
--- a/automation/build/debian/bullseye-ppc64le.dockerfile
+++ b/automation/build/debian/bullseye-ppc64le.dockerfile
@@ -1,4 +1,4 @@
-FROM debian:bullseye-slim
+FROM --platform=linux/amd64 debian:bullseye-slim
LABEL maintainer.name="The Xen Project" \
maintainer.email="xen-devel@lists.xenproject.org"
diff --git a/automation/build/debian/buster-gcc-ibt.dockerfile b/automation/build/debian/buster-gcc-ibt.dockerfile
index 96ab4fe8a2f1..4328c109b72b 100644
--- a/automation/build/debian/buster-gcc-ibt.dockerfile
+++ b/automation/build/debian/buster-gcc-ibt.dockerfile
@@ -1,4 +1,4 @@
-FROM debian:buster-slim AS builder
+FROM --platform=linux/amd64 debian:buster-slim AS builder
ENV DEBIAN_FRONTEND=noninteractive
ENV USER root
diff --git a/automation/build/debian/jessie.dockerfile b/automation/build/debian/jessie.dockerfile
index 63b2c1e5b771..db0962953c9a 100644
--- a/automation/build/debian/jessie.dockerfile
+++ b/automation/build/debian/jessie.dockerfile
@@ -1,4 +1,4 @@
-FROM debian/eol:jessie
+FROM --platform=linux/amd64 debian/eol:jessie
LABEL maintainer.name="The Xen Project" \
maintainer.email="xen-devel@lists.xenproject.org"
diff --git a/automation/build/debian/stretch.dockerfile b/automation/build/debian/stretch.dockerfile
index 1af6c691f8f4..9f6c146f032c 100644
--- a/automation/build/debian/stretch.dockerfile
+++ b/automation/build/debian/stretch.dockerfile
@@ -1,4 +1,4 @@
-FROM debian:stretch
+FROM --platform=linux/amd64 debian:stretch
LABEL maintainer.name="The Xen Project" \
maintainer.email="xen-devel@lists.xenproject.org"
diff --git a/automation/build/fedora/29.dockerfile b/automation/build/fedora/29.dockerfile
index e55b06a4517e..42a87ce6c84b 100644
--- a/automation/build/fedora/29.dockerfile
+++ b/automation/build/fedora/29.dockerfile
@@ -1,4 +1,4 @@
-FROM fedora:29
+FROM --platform=linux/amd64 fedora:29
LABEL maintainer.name="The Xen Project" \
maintainer.email="xen-devel@lists.xenproject.org"
diff --git a/automation/build/suse/opensuse-leap.dockerfile b/automation/build/suse/opensuse-leap.dockerfile
index 7010b71acaa0..e1ec38a41445 100644
--- a/automation/build/suse/opensuse-leap.dockerfile
+++ b/automation/build/suse/opensuse-leap.dockerfile
@@ -1,4 +1,4 @@
-FROM opensuse/leap
+FROM --platform=linux/amd64 opensuse/leap
LABEL maintainer.name="The Xen Project" \
maintainer.email="xen-devel@lists.xenproject.org"
diff --git a/automation/build/suse/opensuse-tumbleweed.dockerfile b/automation/build/suse/opensuse-tumbleweed.dockerfile
index 959e1f6939f0..38f6fda2ff1b 100644
--- a/automation/build/suse/opensuse-tumbleweed.dockerfile
+++ b/automation/build/suse/opensuse-tumbleweed.dockerfile
@@ -1,4 +1,4 @@
-FROM opensuse/tumbleweed
+FROM --platform=linux/amd64 opensuse/tumbleweed
LABEL maintainer.name="The Xen Project" \
maintainer.email="xen-devel@lists.xenproject.org"
diff --git a/automation/build/ubuntu/bionic.dockerfile b/automation/build/ubuntu/bionic.dockerfile
index e15f54431efb..77d7f933860c 100644
--- a/automation/build/ubuntu/bionic.dockerfile
+++ b/automation/build/ubuntu/bionic.dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:18.04
+FROM --platform=linux/amd64 ubuntu:18.04
LABEL maintainer.name="The Xen Project " \
maintainer.email="xen-devel@lists.xenproject.org"
diff --git a/automation/build/ubuntu/focal.dockerfile b/automation/build/ubuntu/focal.dockerfile
index e3d11194ee2f..30a9b8e84ffe 100644
--- a/automation/build/ubuntu/focal.dockerfile
+++ b/automation/build/ubuntu/focal.dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:20.04
+FROM --platform=linux/amd64 ubuntu:20.04
LABEL maintainer.name="The Xen Project " \
maintainer.email="xen-devel@lists.xenproject.org"
diff --git a/automation/build/ubuntu/trusty.dockerfile b/automation/build/ubuntu/trusty.dockerfile
index 22e294c20cac..0d33578c4e1d 100644
--- a/automation/build/ubuntu/trusty.dockerfile
+++ b/automation/build/ubuntu/trusty.dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:14.04
+FROM --platform=linux/amd64 ubuntu:14.04
LABEL maintainer.name="The Xen Project" \
maintainer.email="xen-devel@lists.xenproject.org"
diff --git a/automation/build/ubuntu/xenial-xilinx.dockerfile b/automation/build/ubuntu/xenial-xilinx.dockerfile
index 5f7087135213..49f27b322995 100644
--- a/automation/build/ubuntu/xenial-xilinx.dockerfile
+++ b/automation/build/ubuntu/xenial-xilinx.dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:16.04
+FROM --platform=linux/amd64 ubuntu:16.04
LABEL maintainer.name="The Xen Project " \
maintainer.email="xen-devel@lists.xenproject.org"
diff --git a/automation/build/ubuntu/xenial.dockerfile b/automation/build/ubuntu/xenial.dockerfile
index 2d2ba3e31f63..e8035434f804 100644
--- a/automation/build/ubuntu/xenial.dockerfile
+++ b/automation/build/ubuntu/xenial.dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:16.04
+FROM --platform=linux/amd64 ubuntu:16.04
LABEL maintainer.name="The Xen Project " \
maintainer.email="xen-devel@lists.xenproject.org"
--
2.42.0
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH] automation: set architecture in docker files
2023-11-13 15:57 [PATCH] automation: set architecture in docker files Roger Pau Monne
@ 2023-11-14 0:10 ` Stefano Stabellini
2023-11-14 9:01 ` Roger Pau Monné
0 siblings, 1 reply; 6+ messages in thread
From: Stefano Stabellini @ 2023-11-14 0:10 UTC (permalink / raw)
To: Roger Pau Monne; +Cc: xen-devel, Doug Goldstein, Stefano Stabellini
[-- Attachment #1: Type: text/plain, Size: 9611 bytes --]
On Mon, 13 Nov 2023, Roger Pau Monne wrote:
> Pass the desired architecture of the image in the FROM instruction if the
> image is possibly multi-platform.
>
> This allows using the x86 Dockerfiles on OS X on arm64 hardware.
>
> No functional change intended.
>
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Although I am not opposed to this change, so far we have been using:
arm64v8/alpine:3.18
for x86 it is not specified but it would be:
amd64/alpine:3.18
Two options:
1) we add amd64/ everywhere and leave the arm containers alone
2) we change all containers, including the arm containers, to use the
--platform option
I don't think is a good idea to have 2 different ways to specify the
architecture for x86 and arm containers
> ---
> I haven't touched the Yocto dockerfile because I'm not sure how it's used.
> ---
> automation/build/alpine/3.18.dockerfile | 2 +-
> automation/build/archlinux/current-riscv64.dockerfile | 2 +-
> automation/build/archlinux/current.dockerfile | 2 +-
> automation/build/centos/7.dockerfile | 2 +-
> automation/build/debian/bookworm.dockerfile | 2 +-
> automation/build/debian/bullseye-ppc64le.dockerfile | 2 +-
> automation/build/debian/buster-gcc-ibt.dockerfile | 2 +-
> automation/build/debian/jessie.dockerfile | 2 +-
> automation/build/debian/stretch.dockerfile | 2 +-
> automation/build/fedora/29.dockerfile | 2 +-
> automation/build/suse/opensuse-leap.dockerfile | 2 +-
> automation/build/suse/opensuse-tumbleweed.dockerfile | 2 +-
> automation/build/ubuntu/bionic.dockerfile | 2 +-
> automation/build/ubuntu/focal.dockerfile | 2 +-
> automation/build/ubuntu/trusty.dockerfile | 2 +-
> automation/build/ubuntu/xenial-xilinx.dockerfile | 2 +-
> automation/build/ubuntu/xenial.dockerfile | 2 +-
> 17 files changed, 17 insertions(+), 17 deletions(-)
>
> diff --git a/automation/build/alpine/3.18.dockerfile b/automation/build/alpine/3.18.dockerfile
> index 5d2a69a06010..4ae9cb5e9e30 100644
> --- a/automation/build/alpine/3.18.dockerfile
> +++ b/automation/build/alpine/3.18.dockerfile
> @@ -1,4 +1,4 @@
> -FROM alpine:3.18
> +FROM --platform=linux/amd64 alpine:3.18
> LABEL maintainer.name="The Xen Project" \
> maintainer.email="xen-devel@lists.xenproject.org"
>
> diff --git a/automation/build/archlinux/current-riscv64.dockerfile b/automation/build/archlinux/current-riscv64.dockerfile
> index abf8e7bf0b88..af75b5c720ce 100644
> --- a/automation/build/archlinux/current-riscv64.dockerfile
> +++ b/automation/build/archlinux/current-riscv64.dockerfile
> @@ -1,4 +1,4 @@
> -FROM archlinux
> +FROM --platform=linux/amd64 archlinux
> LABEL maintainer.name="The Xen Project" \
> maintainer.email="xen-devel@lists.xenproject.org"
>
> diff --git a/automation/build/archlinux/current.dockerfile b/automation/build/archlinux/current.dockerfile
> index 47e79637a4a6..d974a1434fd5 100644
> --- a/automation/build/archlinux/current.dockerfile
> +++ b/automation/build/archlinux/current.dockerfile
> @@ -1,4 +1,4 @@
> -FROM archlinux:base-devel
> +FROM --platform=linux/amd64 archlinux:base-devel
> LABEL maintainer.name="The Xen Project" \
> maintainer.email="xen-devel@lists.xenproject.org"
>
> diff --git a/automation/build/centos/7.dockerfile b/automation/build/centos/7.dockerfile
> index 69dcefb2f011..ab450f0b3a0e 100644
> --- a/automation/build/centos/7.dockerfile
> +++ b/automation/build/centos/7.dockerfile
> @@ -1,4 +1,4 @@
> -FROM centos:7
> +FROM --platform=linux/amd64 centos:7
> LABEL maintainer.name="The Xen Project" \
> maintainer.email="xen-devel@lists.xenproject.org"
>
> diff --git a/automation/build/debian/bookworm.dockerfile b/automation/build/debian/bookworm.dockerfile
> index ae008c8d46e5..ac87778b3972 100644
> --- a/automation/build/debian/bookworm.dockerfile
> +++ b/automation/build/debian/bookworm.dockerfile
> @@ -1,4 +1,4 @@
> -FROM debian:bookworm
> +FROM --platform=linux/amd64 debian:bookworm
> LABEL maintainer.name="The Xen Project" \
> maintainer.email="xen-devel@lists.xenproject.org"
>
> diff --git a/automation/build/debian/bullseye-ppc64le.dockerfile b/automation/build/debian/bullseye-ppc64le.dockerfile
> index 4de8458445ae..6fdfb6bc2b40 100644
> --- a/automation/build/debian/bullseye-ppc64le.dockerfile
> +++ b/automation/build/debian/bullseye-ppc64le.dockerfile
> @@ -1,4 +1,4 @@
> -FROM debian:bullseye-slim
> +FROM --platform=linux/amd64 debian:bullseye-slim
> LABEL maintainer.name="The Xen Project" \
> maintainer.email="xen-devel@lists.xenproject.org"
>
> diff --git a/automation/build/debian/buster-gcc-ibt.dockerfile b/automation/build/debian/buster-gcc-ibt.dockerfile
> index 96ab4fe8a2f1..4328c109b72b 100644
> --- a/automation/build/debian/buster-gcc-ibt.dockerfile
> +++ b/automation/build/debian/buster-gcc-ibt.dockerfile
> @@ -1,4 +1,4 @@
> -FROM debian:buster-slim AS builder
> +FROM --platform=linux/amd64 debian:buster-slim AS builder
>
> ENV DEBIAN_FRONTEND=noninteractive
> ENV USER root
> diff --git a/automation/build/debian/jessie.dockerfile b/automation/build/debian/jessie.dockerfile
> index 63b2c1e5b771..db0962953c9a 100644
> --- a/automation/build/debian/jessie.dockerfile
> +++ b/automation/build/debian/jessie.dockerfile
> @@ -1,4 +1,4 @@
> -FROM debian/eol:jessie
> +FROM --platform=linux/amd64 debian/eol:jessie
> LABEL maintainer.name="The Xen Project" \
> maintainer.email="xen-devel@lists.xenproject.org"
>
> diff --git a/automation/build/debian/stretch.dockerfile b/automation/build/debian/stretch.dockerfile
> index 1af6c691f8f4..9f6c146f032c 100644
> --- a/automation/build/debian/stretch.dockerfile
> +++ b/automation/build/debian/stretch.dockerfile
> @@ -1,4 +1,4 @@
> -FROM debian:stretch
> +FROM --platform=linux/amd64 debian:stretch
> LABEL maintainer.name="The Xen Project" \
> maintainer.email="xen-devel@lists.xenproject.org"
>
> diff --git a/automation/build/fedora/29.dockerfile b/automation/build/fedora/29.dockerfile
> index e55b06a4517e..42a87ce6c84b 100644
> --- a/automation/build/fedora/29.dockerfile
> +++ b/automation/build/fedora/29.dockerfile
> @@ -1,4 +1,4 @@
> -FROM fedora:29
> +FROM --platform=linux/amd64 fedora:29
> LABEL maintainer.name="The Xen Project" \
> maintainer.email="xen-devel@lists.xenproject.org"
>
> diff --git a/automation/build/suse/opensuse-leap.dockerfile b/automation/build/suse/opensuse-leap.dockerfile
> index 7010b71acaa0..e1ec38a41445 100644
> --- a/automation/build/suse/opensuse-leap.dockerfile
> +++ b/automation/build/suse/opensuse-leap.dockerfile
> @@ -1,4 +1,4 @@
> -FROM opensuse/leap
> +FROM --platform=linux/amd64 opensuse/leap
> LABEL maintainer.name="The Xen Project" \
> maintainer.email="xen-devel@lists.xenproject.org"
>
> diff --git a/automation/build/suse/opensuse-tumbleweed.dockerfile b/automation/build/suse/opensuse-tumbleweed.dockerfile
> index 959e1f6939f0..38f6fda2ff1b 100644
> --- a/automation/build/suse/opensuse-tumbleweed.dockerfile
> +++ b/automation/build/suse/opensuse-tumbleweed.dockerfile
> @@ -1,4 +1,4 @@
> -FROM opensuse/tumbleweed
> +FROM --platform=linux/amd64 opensuse/tumbleweed
> LABEL maintainer.name="The Xen Project" \
> maintainer.email="xen-devel@lists.xenproject.org"
>
> diff --git a/automation/build/ubuntu/bionic.dockerfile b/automation/build/ubuntu/bionic.dockerfile
> index e15f54431efb..77d7f933860c 100644
> --- a/automation/build/ubuntu/bionic.dockerfile
> +++ b/automation/build/ubuntu/bionic.dockerfile
> @@ -1,4 +1,4 @@
> -FROM ubuntu:18.04
> +FROM --platform=linux/amd64 ubuntu:18.04
> LABEL maintainer.name="The Xen Project " \
> maintainer.email="xen-devel@lists.xenproject.org"
>
> diff --git a/automation/build/ubuntu/focal.dockerfile b/automation/build/ubuntu/focal.dockerfile
> index e3d11194ee2f..30a9b8e84ffe 100644
> --- a/automation/build/ubuntu/focal.dockerfile
> +++ b/automation/build/ubuntu/focal.dockerfile
> @@ -1,4 +1,4 @@
> -FROM ubuntu:20.04
> +FROM --platform=linux/amd64 ubuntu:20.04
> LABEL maintainer.name="The Xen Project " \
> maintainer.email="xen-devel@lists.xenproject.org"
>
> diff --git a/automation/build/ubuntu/trusty.dockerfile b/automation/build/ubuntu/trusty.dockerfile
> index 22e294c20cac..0d33578c4e1d 100644
> --- a/automation/build/ubuntu/trusty.dockerfile
> +++ b/automation/build/ubuntu/trusty.dockerfile
> @@ -1,4 +1,4 @@
> -FROM ubuntu:14.04
> +FROM --platform=linux/amd64 ubuntu:14.04
> LABEL maintainer.name="The Xen Project" \
> maintainer.email="xen-devel@lists.xenproject.org"
>
> diff --git a/automation/build/ubuntu/xenial-xilinx.dockerfile b/automation/build/ubuntu/xenial-xilinx.dockerfile
> index 5f7087135213..49f27b322995 100644
> --- a/automation/build/ubuntu/xenial-xilinx.dockerfile
> +++ b/automation/build/ubuntu/xenial-xilinx.dockerfile
> @@ -1,4 +1,4 @@
> -FROM ubuntu:16.04
> +FROM --platform=linux/amd64 ubuntu:16.04
> LABEL maintainer.name="The Xen Project " \
> maintainer.email="xen-devel@lists.xenproject.org"
>
> diff --git a/automation/build/ubuntu/xenial.dockerfile b/automation/build/ubuntu/xenial.dockerfile
> index 2d2ba3e31f63..e8035434f804 100644
> --- a/automation/build/ubuntu/xenial.dockerfile
> +++ b/automation/build/ubuntu/xenial.dockerfile
> @@ -1,4 +1,4 @@
> -FROM ubuntu:16.04
> +FROM --platform=linux/amd64 ubuntu:16.04
> LABEL maintainer.name="The Xen Project " \
> maintainer.email="xen-devel@lists.xenproject.org"
>
> --
> 2.42.0
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] automation: set architecture in docker files
2023-11-14 0:10 ` Stefano Stabellini
@ 2023-11-14 9:01 ` Roger Pau Monné
2023-11-14 15:00 ` Anthony PERARD
0 siblings, 1 reply; 6+ messages in thread
From: Roger Pau Monné @ 2023-11-14 9:01 UTC (permalink / raw)
To: Stefano Stabellini; +Cc: xen-devel, Doug Goldstein
On Mon, Nov 13, 2023 at 04:10:24PM -0800, Stefano Stabellini wrote:
> On Mon, 13 Nov 2023, Roger Pau Monne wrote:
> > Pass the desired architecture of the image in the FROM instruction if the
> > image is possibly multi-platform.
> >
> > This allows using the x86 Dockerfiles on OS X on arm64 hardware.
> >
> > No functional change intended.
> >
> > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
>
> Although I am not opposed to this change, so far we have been using:
> arm64v8/alpine:3.18
>
> for x86 it is not specified but it would be:
> amd64/alpine:3.18
>
> Two options:
> 1) we add amd64/ everywhere and leave the arm containers alone
> 2) we change all containers, including the arm containers, to use the
> --platform option
>
> I don't think is a good idea to have 2 different ways to specify the
> architecture for x86 and arm containers
I'm not an expert on this, but attempting to use (2):
-FROM arm64v8/alpine:3.18
+FROM --platform=linux/arm64v8 alpine:3.18
Does not work for me:
% make -C automation/build alpine/3.18-arm64v8
docker build --pull -t registry.gitlab.com/xen-project/xen/alpine:3.18-arm64v8 -f alpine/3.18-arm64v8.dockerfile alpine
[+] Building 1.4s (3/3) FINISHED docker:desktop-linux
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load build definition from 3.18-arm64v8.dockerfile 0.0s
=> => transferring dockerfile: 818B 0.0s
=> ERROR [internal] load metadata for docker.io/library/alpine:3.18 1.4s
------
> [internal] load metadata for docker.io/library/alpine:3.18:
------
3.18-arm64v8.dockerfile:1
--------------------
1 | >>> FROM --platform=linux/arm64v8 alpine:3.18
2 | LABEL maintainer.name="The Xen Project" \
3 | maintainer.email="xen-devel@lists.xenproject.org"
--------------------
ERROR: failed to solve: alpine:3.18: no match for platform in manifest sha256:eece025e432126ce23f223450a0326fbebde39cdf496a85d8c016293fc851978: not found
make: *** [alpine/3.18-arm64v8] Error 1
That's why I've left the prefixed images alone.
I could prefix the x86 images with amd64/ if that's preferred, I
didn't try that option, as the Docker manual suggested using
--platform.
Thanks, Roger.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] automation: set architecture in docker files
2023-11-14 9:01 ` Roger Pau Monné
@ 2023-11-14 15:00 ` Anthony PERARD
2023-11-14 16:56 ` Roger Pau Monné
0 siblings, 1 reply; 6+ messages in thread
From: Anthony PERARD @ 2023-11-14 15:00 UTC (permalink / raw)
To: Roger Pau Monné; +Cc: Stefano Stabellini, xen-devel, Doug Goldstein
On Tue, Nov 14, 2023 at 10:01:06AM +0100, Roger Pau Monné wrote:
> On Mon, Nov 13, 2023 at 04:10:24PM -0800, Stefano Stabellini wrote:
> > On Mon, 13 Nov 2023, Roger Pau Monne wrote:
> > > Pass the desired architecture of the image in the FROM instruction if the
> > > image is possibly multi-platform.
> > >
> > > This allows using the x86 Dockerfiles on OS X on arm64 hardware.
> > >
> > > No functional change intended.
> > >
> > > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> >
> > Although I am not opposed to this change, so far we have been using:
> > arm64v8/alpine:3.18
> >
> > for x86 it is not specified but it would be:
> > amd64/alpine:3.18
> >
> > Two options:
> > 1) we add amd64/ everywhere and leave the arm containers alone
> > 2) we change all containers, including the arm containers, to use the
> > --platform option
> >
> > I don't think is a good idea to have 2 different ways to specify the
> > architecture for x86 and arm containers
>
> I'm not an expert on this, but attempting to use (2):
>
> -FROM arm64v8/alpine:3.18
> +FROM --platform=linux/arm64v8 alpine:3.18
>
> Does not work for me:
>
> % make -C automation/build alpine/3.18-arm64v8
> docker build --pull -t registry.gitlab.com/xen-project/xen/alpine:3.18-arm64v8 -f alpine/3.18-arm64v8.dockerfile alpine
> [+] Building 1.4s (3/3) FINISHED docker:desktop-linux
> => [internal] load .dockerignore 0.0s
> => => transferring context: 2B 0.0s
> => [internal] load build definition from 3.18-arm64v8.dockerfile 0.0s
> => => transferring dockerfile: 818B 0.0s
> => ERROR [internal] load metadata for docker.io/library/alpine:3.18 1.4s
> ------
> > [internal] load metadata for docker.io/library/alpine:3.18:
> ------
> 3.18-arm64v8.dockerfile:1
> --------------------
> 1 | >>> FROM --platform=linux/arm64v8 alpine:3.18
> 2 | LABEL maintainer.name="The Xen Project" \
> 3 | maintainer.email="xen-devel@lists.xenproject.org"
> --------------------
> ERROR: failed to solve: alpine:3.18: no match for platform in manifest sha256:eece025e432126ce23f223450a0326fbebde39cdf496a85d8c016293fc851978: not found
> make: *** [alpine/3.18-arm64v8] Error 1
>
> That's why I've left the prefixed images alone.
>
> I could prefix the x86 images with amd64/ if that's preferred, I
> didn't try that option, as the Docker manual suggested using
> --platform.
So a few things to know, "--platform=linux/amd64" just select a
different build of one container. For example, for the "alpine"
containers, you can see all the different builds available on the docker
hub, here a few links:
- Official Docker, Alpine images, home:
https://hub.docker.com/_/alpine
- The different builds:
https://hub.docker.com/_/alpine/tags
So, for amd64v8, you probably want --platform=linux/arm64/v8
Then, they are per-architecture repository that make it easier to deal
with foreign architecture, and probably maintained by a different
community. e.g. for alpine arm64v8:
https://hub.docker.com/r/arm64v8/alpine/
Those provide a build for a single architecture.
Sometime, you actually need to "--platform=*" to select a particular
architecture, like I did for "jessie-i386.dockerfile".
One thing I've notice when using --platform is that, if for example I
use the container "--platform=linux/amd64 alpine:3" then
"--platform=linux/arm/v6 alpine:3"; later when I only specify
"alpine:3", it's going to be the armv6, and I think docker is going to
complain if I try tu use "--platform=linux/amd64 alpine:3" without
"docker pull" first (or I guess docker build --pull).
Hope that help.
So I guess using containers "amd64/*" or "arm64v8/*" is fine, but
sometime will need to use "--platform=*".
Cheers,
--
Anthony PERARD
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH] automation: set architecture in docker files
2023-11-14 15:00 ` Anthony PERARD
@ 2023-11-14 16:56 ` Roger Pau Monné
2023-11-14 21:47 ` Stefano Stabellini
0 siblings, 1 reply; 6+ messages in thread
From: Roger Pau Monné @ 2023-11-14 16:56 UTC (permalink / raw)
To: Anthony PERARD; +Cc: Stefano Stabellini, xen-devel, Doug Goldstein
On Tue, Nov 14, 2023 at 03:00:17PM +0000, Anthony PERARD wrote:
> On Tue, Nov 14, 2023 at 10:01:06AM +0100, Roger Pau Monné wrote:
> > On Mon, Nov 13, 2023 at 04:10:24PM -0800, Stefano Stabellini wrote:
> > > On Mon, 13 Nov 2023, Roger Pau Monne wrote:
> > > > Pass the desired architecture of the image in the FROM instruction if the
> > > > image is possibly multi-platform.
> > > >
> > > > This allows using the x86 Dockerfiles on OS X on arm64 hardware.
> > > >
> > > > No functional change intended.
> > > >
> > > > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> > >
> > > Although I am not opposed to this change, so far we have been using:
> > > arm64v8/alpine:3.18
> > >
> > > for x86 it is not specified but it would be:
> > > amd64/alpine:3.18
> > >
> > > Two options:
> > > 1) we add amd64/ everywhere and leave the arm containers alone
> > > 2) we change all containers, including the arm containers, to use the
> > > --platform option
> > >
> > > I don't think is a good idea to have 2 different ways to specify the
> > > architecture for x86 and arm containers
> >
> > I'm not an expert on this, but attempting to use (2):
> >
> > -FROM arm64v8/alpine:3.18
> > +FROM --platform=linux/arm64v8 alpine:3.18
> >
> > Does not work for me:
> >
> > % make -C automation/build alpine/3.18-arm64v8
> > docker build --pull -t registry.gitlab.com/xen-project/xen/alpine:3.18-arm64v8 -f alpine/3.18-arm64v8.dockerfile alpine
> > [+] Building 1.4s (3/3) FINISHED docker:desktop-linux
> > => [internal] load .dockerignore 0.0s
> > => => transferring context: 2B 0.0s
> > => [internal] load build definition from 3.18-arm64v8.dockerfile 0.0s
> > => => transferring dockerfile: 818B 0.0s
> > => ERROR [internal] load metadata for docker.io/library/alpine:3.18 1.4s
> > ------
> > > [internal] load metadata for docker.io/library/alpine:3.18:
> > ------
> > 3.18-arm64v8.dockerfile:1
> > --------------------
> > 1 | >>> FROM --platform=linux/arm64v8 alpine:3.18
> > 2 | LABEL maintainer.name="The Xen Project" \
> > 3 | maintainer.email="xen-devel@lists.xenproject.org"
> > --------------------
> > ERROR: failed to solve: alpine:3.18: no match for platform in manifest sha256:eece025e432126ce23f223450a0326fbebde39cdf496a85d8c016293fc851978: not found
> > make: *** [alpine/3.18-arm64v8] Error 1
> >
> > That's why I've left the prefixed images alone.
> >
> > I could prefix the x86 images with amd64/ if that's preferred, I
> > didn't try that option, as the Docker manual suggested using
> > --platform.
>
> So a few things to know, "--platform=linux/amd64" just select a
> different build of one container. For example, for the "alpine"
> containers, you can see all the different builds available on the docker
> hub, here a few links:
> - Official Docker, Alpine images, home:
> https://hub.docker.com/_/alpine
> - The different builds:
> https://hub.docker.com/_/alpine/tags
>
> So, for amd64v8, you probably want --platform=linux/arm64/v8
Interesting, I guess I was looking at an outdated documentation that
stated the tag as arm64v8 instead of arm64/v8.
>
> Then, they are per-architecture repository that make it easier to deal
> with foreign architecture, and probably maintained by a different
> community. e.g. for alpine arm64v8:
> https://hub.docker.com/r/arm64v8/alpine/
>
> Those provide a build for a single architecture.
Right, so those two are not actually the same image. I wonder whether
we would want to uniformly switch to using --platform when possible,
in order to make sure we are using the same (multi arch) image to
avoid surprises.
>
>
> Sometime, you actually need to "--platform=*" to select a particular
> architecture, like I did for "jessie-i386.dockerfile".
>
>
> One thing I've notice when using --platform is that, if for example I
> use the container "--platform=linux/amd64 alpine:3" then
> "--platform=linux/arm/v6 alpine:3"; later when I only specify
> "alpine:3", it's going to be the armv6, and I think docker is going to
> complain if I try tu use "--platform=linux/amd64 alpine:3" without
> "docker pull" first (or I guess docker build --pull).
>
> Hope that help.
>
> So I guess using containers "amd64/*" or "arm64v8/*" is fine, but
> sometime will need to use "--platform=*".
My take is that it's better to use --platform when possible, as then
all platforms share the same image, and the contents of the image
should be more consistent.
I guess we could see about switching some of the image that currently
use a prefix (like the Alpine one) in order to instead use --platform
and share the same image. I wouldn't want to do it in this patch
however, as the change presented here should be non-functional, while
switching to the multi arch image might introduce changes.
Thanks, Roger.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] automation: set architecture in docker files
2023-11-14 16:56 ` Roger Pau Monné
@ 2023-11-14 21:47 ` Stefano Stabellini
0 siblings, 0 replies; 6+ messages in thread
From: Stefano Stabellini @ 2023-11-14 21:47 UTC (permalink / raw)
To: Roger Pau Monné
Cc: Anthony PERARD, Stefano Stabellini, xen-devel, Doug Goldstein
[-- Attachment #1: Type: text/plain, Size: 5790 bytes --]
On Tue, 14 Nov 2023, Roger Pau Monné wrote:
> On Tue, Nov 14, 2023 at 03:00:17PM +0000, Anthony PERARD wrote:
> > On Tue, Nov 14, 2023 at 10:01:06AM +0100, Roger Pau Monné wrote:
> > > On Mon, Nov 13, 2023 at 04:10:24PM -0800, Stefano Stabellini wrote:
> > > > On Mon, 13 Nov 2023, Roger Pau Monne wrote:
> > > > > Pass the desired architecture of the image in the FROM instruction if the
> > > > > image is possibly multi-platform.
> > > > >
> > > > > This allows using the x86 Dockerfiles on OS X on arm64 hardware.
> > > > >
> > > > > No functional change intended.
> > > > >
> > > > > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> > > >
> > > > Although I am not opposed to this change, so far we have been using:
> > > > arm64v8/alpine:3.18
> > > >
> > > > for x86 it is not specified but it would be:
> > > > amd64/alpine:3.18
> > > >
> > > > Two options:
> > > > 1) we add amd64/ everywhere and leave the arm containers alone
> > > > 2) we change all containers, including the arm containers, to use the
> > > > --platform option
> > > >
> > > > I don't think is a good idea to have 2 different ways to specify the
> > > > architecture for x86 and arm containers
> > >
> > > I'm not an expert on this, but attempting to use (2):
> > >
> > > -FROM arm64v8/alpine:3.18
> > > +FROM --platform=linux/arm64v8 alpine:3.18
> > >
> > > Does not work for me:
> > >
> > > % make -C automation/build alpine/3.18-arm64v8
> > > docker build --pull -t registry.gitlab.com/xen-project/xen/alpine:3.18-arm64v8 -f alpine/3.18-arm64v8.dockerfile alpine
> > > [+] Building 1.4s (3/3) FINISHED docker:desktop-linux
> > > => [internal] load .dockerignore 0.0s
> > > => => transferring context: 2B 0.0s
> > > => [internal] load build definition from 3.18-arm64v8.dockerfile 0.0s
> > > => => transferring dockerfile: 818B 0.0s
> > > => ERROR [internal] load metadata for docker.io/library/alpine:3.18 1.4s
> > > ------
> > > > [internal] load metadata for docker.io/library/alpine:3.18:
> > > ------
> > > 3.18-arm64v8.dockerfile:1
> > > --------------------
> > > 1 | >>> FROM --platform=linux/arm64v8 alpine:3.18
> > > 2 | LABEL maintainer.name="The Xen Project" \
> > > 3 | maintainer.email="xen-devel@lists.xenproject.org"
> > > --------------------
> > > ERROR: failed to solve: alpine:3.18: no match for platform in manifest sha256:eece025e432126ce23f223450a0326fbebde39cdf496a85d8c016293fc851978: not found
> > > make: *** [alpine/3.18-arm64v8] Error 1
> > >
> > > That's why I've left the prefixed images alone.
> > >
> > > I could prefix the x86 images with amd64/ if that's preferred, I
> > > didn't try that option, as the Docker manual suggested using
> > > --platform.
> >
> > So a few things to know, "--platform=linux/amd64" just select a
> > different build of one container. For example, for the "alpine"
> > containers, you can see all the different builds available on the docker
> > hub, here a few links:
> > - Official Docker, Alpine images, home:
> > https://hub.docker.com/_/alpine
> > - The different builds:
> > https://hub.docker.com/_/alpine/tags
> >
> > So, for amd64v8, you probably want --platform=linux/arm64/v8
>
> Interesting, I guess I was looking at an outdated documentation that
> stated the tag as arm64v8 instead of arm64/v8.
>
> >
> > Then, they are per-architecture repository that make it easier to deal
> > with foreign architecture, and probably maintained by a different
> > community. e.g. for alpine arm64v8:
> > https://hub.docker.com/r/arm64v8/alpine/
> >
> > Those provide a build for a single architecture.
>
> Right, so those two are not actually the same image. I wonder whether
> we would want to uniformly switch to using --platform when possible,
> in order to make sure we are using the same (multi arch) image to
> avoid surprises.
>
> >
> >
> > Sometime, you actually need to "--platform=*" to select a particular
> > architecture, like I did for "jessie-i386.dockerfile".
> >
> >
> > One thing I've notice when using --platform is that, if for example I
> > use the container "--platform=linux/amd64 alpine:3" then
> > "--platform=linux/arm/v6 alpine:3"; later when I only specify
> > "alpine:3", it's going to be the armv6, and I think docker is going to
> > complain if I try tu use "--platform=linux/amd64 alpine:3" without
> > "docker pull" first (or I guess docker build --pull).
> >
> > Hope that help.
> >
> > So I guess using containers "amd64/*" or "arm64v8/*" is fine, but
> > sometime will need to use "--platform=*".
>
> My take is that it's better to use --platform when possible, as then
> all platforms share the same image, and the contents of the image
> should be more consistent.
>
> I guess we could see about switching some of the image that currently
> use a prefix (like the Alpine one) in order to instead use --platform
> and share the same image. I wouldn't want to do it in this patch
> however, as the change presented here should be non-functional, while
> switching to the multi arch image might introduce changes.
I am OK with any way forward as long as we are consistent across
architectures.
If you don't want to change the existing arm64v8 prefixes, I am fine
with that, but then I would ask you to use the amd64 prefix not to break
consistency (do not use --platform).
After that, if you prefer to use --platform, I am totally fine with that
too and it can be a follow-up patch changing the containers of both
architectures.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2023-11-14 21:47 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-11-13 15:57 [PATCH] automation: set architecture in docker files Roger Pau Monne
2023-11-14 0:10 ` Stefano Stabellini
2023-11-14 9:01 ` Roger Pau Monné
2023-11-14 15:00 ` Anthony PERARD
2023-11-14 16:56 ` Roger Pau Monné
2023-11-14 21:47 ` Stefano Stabellini
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.