Skip to content
This repository has been archived by the owner on Feb 16, 2018. It is now read-only.

Add arm32v7 variant of Stretch images #328

Merged
merged 42 commits into from Aug 1, 2017
Merged

Add arm32v7 variant of Stretch images #328

merged 42 commits into from Aug 1, 2017

Conversation

richlander
Copy link
Member

@richlander richlander commented Jun 22, 2017

This PR is not done -- left to do:

  • Validate correctness of the Dockerfiles
  • Update README to include arm32 appropriately.
  • Generate appropriate MA tags/manifests.

@dnfclas
Copy link

dnfclas commented Jun 22, 2017

@richlander,
Thanks for having already signed the Contribution License Agreement. Your agreement was validated by .NET Foundation. We will now review your pull request.
Thanks,
.NET Foundation Pull Request Bot

@MichaelSimons
Copy link
Member

Would it make sense to put the existing Dockerfiles in an architecture directory so that the directory structure is consistent across platforms?

/2.0
/runtime
/stretch
/amd64
/arm32v7

@richlander
Copy link
Member Author

Your formatting got messed up, but I'm pretty sure I know what you meant.

I spent some time looking at our README to see how the GitHub source links would show up per image. Upon further consideration, I like your suggestion better. My suggestion falls a little too much in the "clever" category by compressing the folder structure.

@richlander
Copy link
Member Author

We could add an amd64 directory to the jessie directory for symmetry or leave as-is to keep things simple. Thoughts?

@richlander
Copy link
Member Author

richlander commented Jul 4, 2017

Just tested an ASP.NET Core Preview 2 app using these Docker images on raspbian. The app was dotnet new mvc.

docker

@richlander
Copy link
Member Author

What is left @MichaelSimons? I think we are getting close to landing this PR.

@MichaelSimons
Copy link
Member

@richlander, my preference would be to add the amd64 dir for Jessie as well in order to have symmetry.

@MichaelSimons
Copy link
Member

MichaelSimons commented Jul 5, 2017

@richlander - Regarding your question about the remaining work.

  • Machines to build arm images in official builds. I have a request out to DDIT on this.
  • The image-builder tool used in official builds needs a minor tweak to support ARM builds. I have the changes locally.
  • Once image-builder supports ARM, the new version needs to picked up and then the manifest.json needs to be updated so that official builds will build the MA tags for the ARM images.
  • Unit Tests should be updated to cover the new runtime images.

@richlander
Copy link
Member Author

@MichaelSimons I am getting back to this. We should re-up on where we are at. I was looking at the manifest.json. It would be good to get some guidance on how like you'd like to pivot architecture within the format. I can see a couple options.

I just did a git pull --rebase to make this branch current.

Any progress on the work items you mentioned above?

@MichaelSimons
Copy link
Member

@richlander, I just made dotnet/docker-tools#28 to modify the image-builder tool to support ARM. In the process of testing my change, I updated the manifest locally. Once the PR is merged I will check-in my manifest changes. The blocking issue right now is to get machines to do official builds on. I will be pushing on this over the next few days to get us unblocked.

@MichaelSimons
Copy link
Member

@richlander, @dagood I think this PR is ready for review. I plan on writing a CI test for the ARM images but see that as a separate PR.

@MichaelSimons
Copy link
Member

If you want to try out the multi-arch arm32 tags, I used the build infrastructure changes within this PR to build and push the images to msimons/dotnet-nightly

libstdc++6 \
libunwind8 \
libuuid1 \
zlib1g \
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Weird way to end a file, is this missing the cleanup?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes it is - looks like the && rm -rf /var/lib/apt/lists/* got chopped off.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

@richlander
Copy link
Member Author

LGTM

@alexellis
Copy link

How close or possible is an SDK image for ARM 32-bit? I saw there is a Runtime - but the source needs to be built too.

@MichaelSimons
Copy link
Member

@alexellis - The .NET Core SDK does not run on the Linux + ARM32 configuration. You will need to build your application on X64, copy the binaries to an ARM32 device and then build your Docker image. Alternatively you can make use of a multi-stage Dockerfile on Window 10 or macOS. The dotnet-docker-samples include a sample of this flow. If you have feedback on the sample please feel open an issue in the dotnet-docker-samples repo.

@alexellis
Copy link

alexellis commented Aug 16, 2017

Thanks for the clarification - perhaps you could update the documentation of the Docker Hub page? Otherwise I guess more people will end up here wondering where the SDK is. From a workflow/CI perspective this is disappointing. I work with the RPi platform + Docker a lot as a Docker Captain and .NET developer at work.

Is this a temporary stumbling block or a permanent design decision? What about 64-bit ARM? Packet.net for instance have enterprise-grade Cavium servers which are very generously spec'd.

@richlander
Copy link
Member Author

I wrote up the situation here: dotnet/announcements#29.

So, no, not a permanent decision, but also not our highest priority to solve at the moment. The rational given (performance) wouldn't apply to ARM64, so I would expect a different choice there.

Our first focus is reducing the size of the SDK generally. Once we have that in-hand, then making a good experience on ARM32 should be easier.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Provide an ARM version of the container
5 participants