vmware / photon-docker-image

46 stars 18 forks source link

ARM64 Support #7

Closed odidev closed 6 years ago

odidev commented 6 years ago

It looks like Photon Docker still not support ARM64v8 architecture. I have built a photon rootfs for ARM64 architecture, which is working very well for me.

I would be happy to raise a PR, given that it can be supported by community. Do let me know, further steps required in this direction.

YustasSwamp commented 6 years ago

Hi @odidev, We already build ARM64 RPMs for Photon. And we do have a plan to build ARM64 Photon Docker images. Thanks for asking!

odidev commented 6 years ago

@YustasSwamp : Are there any timelines for official support?

I have photon-rootfs ready with me to support Docker for photon for arm64v8. I am getting pushy as we have critical requirement to support photon for arm64 via docker

Regards,

YustasSwamp commented 6 years ago

Just curious, What project/customer is it?

ARM64 support is targeted for Photon 3.0 release. No date yet. ~Year from now? We can publish RC/Beta of arm support to the dev (not release) repository sooner, let's say end of this year. It is in active development now.

odidev commented 6 years ago

@YustasSwamp : It is not for a specific project. This is w.r.t. increasing demand in the market towards arm64 architecture.

Sooner, we provide support, higher will be the adoption rate from customers. In addition, as I mentioned, I already have working rootfs with me. Can I push the same for review purpose?

I have made changes to photon.repo to point to baseurl=https://vmware.bintray.com/photon_dev_aarch64/

YustasSwamp commented 6 years ago

https://vmware.bintray.com/photon_dev_aarch64/ is preliminary version of aarch64 support. It has not gone through our testing coverage. So the quality is not guaranteed. We don't want it to be published to dockerhub. You can use your docker image generated from these RPMs and even push it to your dockerhub repo, if you have it, it should work as for now.
Hope to see officially tested and signed RPM in the photon_dev_aarch64 repo soon. Creating docker image after that is a question of 2 weeks.

odidev commented 6 years ago

@YustasSwamp : Thanks, I will push my image to my forked dockerhub repo.

But, I think that will not be able to make it docker pullable.

BTW, is there any way that you can create a development or experimental support branch in official repo. In this way, developers can get access to that branch and get the code too. Also, a person doing docker pull on arm64 will get an experimental image.

carlosedp commented 6 years ago

Would you guys share on how the ARM64 image was built? I have an ARM64 box but since the Photon image build depends on Photon itself (that is only amd64) it becomes hard to do it.

Have you crossbuilt it using qemu on an amd64 box @odidev ? I'm planning to build Harbor for the ARM64 arch and this is the first step.

Thanks, any help is welcome!

YustasSwamp commented 6 years ago

You can use ARM64 Ubuntu to build ARM64 Photon RPMs.

carlosedp commented 6 years ago

I understand there are already RPMs built for ARM64, it would be just a matter of changing the repository source like described by @odidev . The problem is that the photon image build is based on photon itself... like a cyclic dependency.

Can't I build the Photon image on another base image like CentOS?

YustasSwamp commented 6 years ago

Photon build system can be used on any Linux OS. Yes, build system pulls Photon core toolchains RPMs from the repository to create sandbox environment (chroot or container). It is Photon based sandbox environment but the host OS might be any Linux.

If you do not have core toolchains available, let's say for MIPS or SPARC architecture, then there is an bootstraping stage to build them using host toolchains and then rebuild then using themselves.

For convenience purposes we skip bootstraping stage for every build by using prebuilt core toolchain RPMs.

carlosedp commented 6 years ago

Where can I get these core RPMs? Is there a script to do the bootstrapping and create the base image? Thanks!

YustasSwamp commented 6 years ago

When you do make packages, make iso, or other targets - build system pulls them from bintray and save in stage/publishrpms folder. pull script, location and file names are here https://github.com/vmware/photon/tree/master/support/pullpublishrpms

Initially build system didn't use publishrpms and it did bootstraping every build. You can find that in the commits history back to 2016. Makefile still has rudiments like tool-chain-stage1 and tool-chain-stage2, but we don't use them as part of the build process

odidev commented 6 years ago

I confirm the same, that I also compiled Photon over CentOS distribution with the command make iso.

Also, I do agree that this will not run as it is over arm64v8 architecture. So you will have to resolve intermediate dependencies to get desired rpm's.

I addition, one key point to note is that bintray doesn't have all the required rpm's for arm64.

BTW, I am also waiting to get official go ahead for Photon support for ARM64

vielmetti commented 6 years ago

I am here because the new CNCF project harbor depends on Photon, and the build fails because there is no arm64 version of Photon.

See https://github.com/goharbor/harbor/issues/6277 for the related issue.

odidev commented 6 years ago

Hi @vielmetti

arm64v8 is supported in photon:3.0 version. I can see that your Harbor image is using photon:2.0, which is actually not supported for arm64v8.

Please modify it to photon:3.0 and then check if it works for you.

Regards,

magicluo0755 commented 5 years ago

Hi @vielmetti

arm64v8 is supported in photon:3.0 version. I can see that your Harbor image is using photon:2.0, which is actually not supported for arm64v8.

Please modify it to photon:3.0 and then check if it works for you.

Regards,

Got the same issue, update the dockerfile to use photon:3.0 version and have a try, Thanks .