Skip to content
This repository has been archived by the owner on Mar 14, 2024. It is now read-only.

Versions not supported by the base image #5

Closed
eitsupi opened this issue Mar 14, 2021 · 7 comments
Closed

Versions not supported by the base image #5

eitsupi opened this issue Mar 14, 2021 · 7 comments
Labels
enhancement New feature or request

Comments

@eitsupi
Copy link
Contributor

eitsupi commented Mar 14, 2021

I apologize that my PR(#3) has caused the image build to fail.
I had not checked to see if I could build on older versions.
https://github.com/julia-vscode/julia-devcontainer/runs/2103487996

It seems that the only supported versions of Julia Docker official image as of today are 1.0.5, the latest version of 1.0, and 1.5.3, the latest version of 1.5.
https://github.com/docker-library/docs/blob/master/julia/README.md

Shared Tags

1.6.0-rc1, 1.6.0, 1.6, 1.6-rc:
    1.6.0-rc1-buster
    1.6.0-rc1-windowsservercore-1809
    1.6.0-rc1-windowsservercore-ltsc2016
1.5.3, 1.5, 1, latest:
    1.5.3-buster
    1.5.3-windowsservercore-1809
    1.5.3-windowsservercore-ltsc2016
1.0.5, 1.0:
    1.0.5-buster
    1.0.5-windowsservercore-1809
    1.0.5-windowsservercore-ltsc2016

I think it would be appropriate to limit the images to only those versions (1.0, 1.5, 1, latest) that are supported.

And it is a good idea to list the supported versions in devcontainer.json like that,
https://github.com/microsoft/vscode-dev-containers/blob/b16a7e4b86bb2e7796dcec902834d77431fe5563/containers/r/.devcontainer/devcontainer.json#L5

If you don't mind, I'd like to submit PRs for these changes.

@eitsupi eitsupi mentioned this issue Mar 14, 2021
@eitsupi eitsupi changed the title Version reduction Versions not supported by the base image Mar 14, 2021
@davidanthoff
Copy link
Member

Hm, that is really strange, because I think all of these builds did work a while ago back... Did they delete these images?

One of the major scenarios I want us to support is to make it easy to provide a repository that has replication code for scientific papers, and for that it is really quite crucial that one can specify a specific Julia version, and that such a version specifier will still work a couple years down the road. My gut feeling is that if the official Julia docker image is no longer willing to provide images with old Julia versions, then maybe we should just not base our stuff off the Julia base image and instead just put everything together ourselves here... I find the whole idea that they would actually delete images that folks might depend on pretty unsettling, TBH...

But maybe I'm misunderstanding something? I also couldn't find any discussion of trace where such a decision to delete old images was taken... Maybe that would be the first step, to figure out what is actually going on with the official images.

@davidanthoff
Copy link
Member

davidanthoff commented Mar 14, 2021

Ok, so actually I think they didn't delete these old images, right? So we should be all good and can continue to rely on them?

Is the problem actually that your PR relied on some functionality that is not present in the older Julia base images?

@eitsupi
Copy link
Contributor Author

eitsupi commented Mar 15, 2021

The reason the build failed is due to a change in the script copied to the Docker image.
Failed to install manpages-posix and manpages-posix-dev for processing in the script.

This change was made 4 days ago.(microsoft/vscode-dev-containers#779)

スクリーンショット 2021-03-15 184105

スクリーンショット 2021-03-15 183907

The versions that failed to build were 1.0.0, 1.0.1, 1.0.2, 1.1.0.
Their base image is Debian 9, and the others' base image is Debian 10.
The script doesn't seem to be able to install manpages-posix and manpages-posix-dev on Debian 9.

$ docker run --rm -it julia:1.1.0 cat /etc/debian_version
9.9
$ docker run --rm -it julia:1.1.1 cat /etc/debian_version
10.0
$ docker run --rm -it julia cat /etc/debian_version
10.8

julia:1.1.0 was last updated 2 years ago.
These old images have not been deleted, but only the supported Julia images are being updated. (now supported 1.5 and LTS 1.0, see Julia’s Release Process)

image

In this way, the old Docker official images stops Debian updating, so it may not be possible to execute a script for the new Debian like this time.

However, this time we can avoid the problem by setting the 7th argument of the script (now true) to false so that manpages-posix and manpages-posix-dev will not be installed.
We can also avoid the problem by using the past script according to the Julia version instead of using the latest version of the script as it is now.

@eitsupi
Copy link
Contributor Author

eitsupi commented Mar 15, 2021

One of the major scenarios I want us to support is to make it easy to provide a repository that has replication code for scientific papers, and for that it is really quite crucial that one can specify a specific Julia version, and that such a version specifier will still work a couple years down the road. My gut feeling is that if the official Julia docker image is no longer willing to provide images with old Julia versions, then maybe we should just not base our stuff off the Julia base image and instead just put everything together ourselves here... I find the whole idea that they would actually delete images that folks might depend on pretty unsettling, TBH...

You may find it helpful to read rocker/r-ver, which provides images of similar ideas in R language.
Repository : https://github.com/rocker-org/rocker-versioned2

The Docker official image r-base only supports the latest version (now 4.0.4), but rocker/r-ver is a completely different image (based on Ubuntu LTS, not Debian) and 4.0.0 ~ 4.0.4 are being updated.

@eitsupi
Copy link
Contributor Author

eitsupi commented Mar 15, 2021

I forgot to write one thing.
By using a digest instead of a tag like that, we can use the exact same image after the tag has been updated (years later).

$ docker pull ghcr.io/julia-vscode/julia-devcontainer@sha256:ade91ac748142ebb3dbfee6281fb1a59e75cc7b214a727b3023f4b91cd024199

image
image

Also, as you can see from the Docker official images, tags that are no longer updated will remain.
So even if you reduce the number of tags to be updated in this repository, you can still use a specific version of Julia later.

@davidanthoff
Copy link
Member

Ok, so for now I turned that seventh argument to false, and now things compile again. I also just updated things to include some more Julia versions.

I think we need to think a bit more what these images here actually are meant to do and what the best way to maintain them is... My original idea had been that we would keep an image for each Julia version, and keep each of these images up-to-date. But that clearly is more difficult than I anticipated because the underlying Julia images are not all maintained... I guess there is also the question whether it is actually better for reproducibility if we update these images at all, after all if we update the Julia 1.3.0 image to a new OS version, that might also break things. So not sure...

I think the options we have a probably:

  1. Stop publishing update images all the time, instead publish an image for a Julia version, then leave it alone.
  2. Keep updating the images for all Julia versions, either by a) no longer relying on the official Julia docker images and just moving everything into our own Dockerfile, or b) starting to use different Dockerfile versions for different Julia image versions.

I don't think we need to come to a conclusion quickly, so I'll leave this issue open for a while, I'd be interested to hear what folks think :)

@eitsupi
Copy link
Contributor Author

eitsupi commented Mar 27, 2021

I should mention that support for other devcontainer images is described in this issue.
microsoft/vscode-dev-containers#532

@davidanthoff davidanthoff added the enhancement New feature or request label Aug 23, 2021
@davidanthoff davidanthoff added this to the Backlog milestone Aug 23, 2021
@davidanthoff davidanthoff removed this from the Backlog milestone Oct 15, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants