New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Missing `latest` tag on Docker Hub. Broken build #166

Closed
sjdweb opened this Issue Oct 2, 2017 · 21 comments

Comments

Projects
None yet
@sjdweb

sjdweb commented Oct 2, 2017

Our CI builds started failing with this error:

Unable to find image 'microsoft/mssql-server-linux:latest' locally
docker: Error response from daemon: manifest for microsoft/mssql-server-linux:latest not found.

Looks like the last update to the image on Docker Hub has removed the latest tag?
https://hub.docker.com/r/microsoft/mssql-server-linux/tags/

@sjdweb sjdweb changed the title from Removed `latest` tag on Docker hub. Broken build to Removed `latest` tag on Docker Hub. Broken build Oct 2, 2017

@sjdweb sjdweb changed the title from Removed `latest` tag on Docker Hub. Broken build to Missing `latest` tag on Docker Hub. Broken build Oct 2, 2017

@kspearrin

This comment has been minimized.

Show comment
Hide comment
@kspearrin

kspearrin Oct 2, 2017

It's now 2017-latest

kspearrin commented Oct 2, 2017

It's now 2017-latest

@cheenamalhotra

This comment has been minimized.

Show comment
Hide comment
@cheenamalhotra

cheenamalhotra Oct 2, 2017

Member

Is 2017-latest default tag? coz :latest gets applied by default to any docker image and we just lost the by default tag for this docker image.

Member

cheenamalhotra commented Oct 2, 2017

Is 2017-latest default tag? coz :latest gets applied by default to any docker image and we just lost the by default tag for this docker image.

@sjdweb

This comment has been minimized.

Show comment
Hide comment
@sjdweb

sjdweb Oct 2, 2017

@cheenamalhotra exactly -- the recommended way to get the latest image is now broken, not to mention latest tag is the idiomatic way in Docker.

docker pull microsoft/mssql-server-linux

This command will no longer work at all. It's a breaking change.

sjdweb commented Oct 2, 2017

@cheenamalhotra exactly -- the recommended way to get the latest image is now broken, not to mention latest tag is the idiomatic way in Docker.

docker pull microsoft/mssql-server-linux

This command will no longer work at all. It's a breaking change.

@twright-msft

This comment has been minimized.

Show comment
Hide comment
@twright-msft

twright-msft Oct 2, 2017

Collaborator

On recommendation from Docker we've not used the 'latest' tag on the images. Apparently nonchalant use of :latest has caused some problems. People will unintentionally upgrade from one version to another by just pulling latest. To help people do the "right thing" we will have a :<version>-latest tag, i.e. 2017-latest. You can pull that and always get the latest cumulative update (CU) on the 2017 version. You can also pull :2017-GA if you want to have the GA image specifically. With each CU that we release we will tag it with 2017-latest and 2017-CU# (e.g. 2017-CU1). When we get to the next version of SQL Server we will tag it as :20##-GA and so on.

Sorry for the breaking change. We're open to feedback on this so if you don't like it or have some other ideas, please let us know here. We'll keep this item open for discussion for awhile and see how it goes.

Collaborator

twright-msft commented Oct 2, 2017

On recommendation from Docker we've not used the 'latest' tag on the images. Apparently nonchalant use of :latest has caused some problems. People will unintentionally upgrade from one version to another by just pulling latest. To help people do the "right thing" we will have a :<version>-latest tag, i.e. 2017-latest. You can pull that and always get the latest cumulative update (CU) on the 2017 version. You can also pull :2017-GA if you want to have the GA image specifically. With each CU that we release we will tag it with 2017-latest and 2017-CU# (e.g. 2017-CU1). When we get to the next version of SQL Server we will tag it as :20##-GA and so on.

Sorry for the breaking change. We're open to feedback on this so if you don't like it or have some other ideas, please let us know here. We'll keep this item open for discussion for awhile and see how it goes.

@jclausen

This comment has been minimized.

Show comment
Hide comment
@jclausen

jclausen Oct 3, 2017

Apparently nonchalant use of :latest has caused some problems. People will unintentionally upgrade from one version to another by just pulling latest.

@twright-msft : My suggestion would be to maintain a :latest tag that is the most current release. For anyone who wants to test the newest version or use it in development. Folks who are new to Docker will need to get used to the idea that using :latest may break backward compat.

Alternately, and better still, it would be great if MSFT could automatically upgrade any persisted databases to the latest version on container start. :)

jclausen commented Oct 3, 2017

Apparently nonchalant use of :latest has caused some problems. People will unintentionally upgrade from one version to another by just pulling latest.

@twright-msft : My suggestion would be to maintain a :latest tag that is the most current release. For anyone who wants to test the newest version or use it in development. Folks who are new to Docker will need to get used to the idea that using :latest may break backward compat.

Alternately, and better still, it would be great if MSFT could automatically upgrade any persisted databases to the latest version on container start. :)

@esetnik

This comment has been minimized.

Show comment
Hide comment
@esetnik

esetnik Oct 3, 2017

I agree with above. We now have broken builds due to the removal of the default tag. Please let people use microsoft/mssql-server-linux if they really want the latest available release.

esetnik commented Oct 3, 2017

I agree with above. We now have broken builds due to the removal of the default tag. Please let people use microsoft/mssql-server-linux if they really want the latest available release.

@arleyschrock

This comment has been minimized.

Show comment
Hide comment
@arleyschrock

arleyschrock Oct 3, 2017

Apparently nonchalant use of :latest has caused some problems. People will unintentionally upgrade from one version to another by just pulling latest.

I agree with above. Removing the default tag for a repository should not even be considered. You should tag every release (even if it means creating multiple tags for the same release) - see https://hub.docker.com/r/microsoft/dotnet. Those who need to stay on a specific version should be using tags anyways.

arleyschrock commented Oct 3, 2017

Apparently nonchalant use of :latest has caused some problems. People will unintentionally upgrade from one version to another by just pulling latest.

I agree with above. Removing the default tag for a repository should not even be considered. You should tag every release (even if it means creating multiple tags for the same release) - see https://hub.docker.com/r/microsoft/dotnet. Those who need to stay on a specific version should be using tags anyways.

@JeffStammler

This comment has been minimized.

Show comment
Hide comment
@JeffStammler

JeffStammler Oct 4, 2017

@sjdweb , @cheenamalhotra , @jclausen , @esetnik , @arleyschrock

We've heard your feedback and we're considering adding the :latest tag back to Docker Hub since SQL Server here is meant for Development only. We wouldn't add it to Docker Store where a customer can get an edition of SQL Server for a production environment, due to the issues @twright-msft mentioned earlier.

We've heard from a handful of people so far. We'd like to hear from a larger sample whether this will work for you (adding :latest to Hub). Let us know!

-Jeff, Microsoft

JeffStammler commented Oct 4, 2017

@sjdweb , @cheenamalhotra , @jclausen , @esetnik , @arleyschrock

We've heard your feedback and we're considering adding the :latest tag back to Docker Hub since SQL Server here is meant for Development only. We wouldn't add it to Docker Store where a customer can get an edition of SQL Server for a production environment, due to the issues @twright-msft mentioned earlier.

We've heard from a handful of people so far. We'd like to hear from a larger sample whether this will work for you (adding :latest to Hub). Let us know!

-Jeff, Microsoft

@oliverkane

This comment has been minimized.

Show comment
Hide comment
@oliverkane

oliverkane Oct 4, 2017

I'd like to add my voice to the crowd. In Dockerland, :latest is the convention. It's widely known (or if you're new, rapidly apparent) that this is not recommended, unless the feed you're pulling from provides assurances of transparent upgrades.

Perhaps it's not the "right" way, but it's unconventional, and quite a surprise for many people I'm sure.

oliverkane commented Oct 4, 2017

I'd like to add my voice to the crowd. In Dockerland, :latest is the convention. It's widely known (or if you're new, rapidly apparent) that this is not recommended, unless the feed you're pulling from provides assurances of transparent upgrades.

Perhaps it's not the "right" way, but it's unconventional, and quite a surprise for many people I'm sure.

@bizmate

This comment has been minimized.

Show comment
Hide comment
@bizmate

bizmate Oct 4, 2017

Just to add my 1p contribution, first of all I would be interested in the long story for the comment

Apparently nonchalant use of :latest has caused some problems. People will unintentionally upgrade from one version to another by just pulling latest.

As multiple people have suggested above the only strategy that makes sense it to have the :latest tag back. I would also prefer this for production because you want to ensure this version is production solid.
Each company then should implement their own CI integration tests even if for a db at a minimal level. The caused some problems use case is most likely due to lack of integration tests. The suggestion from @tadam-msft in my opinion is not solved by a use of a yearly prefix, unless there is a guarantee that in the same year things will not break, but as previously encouraged a better semantic versioning could be used by releasing more tags (X.Y.Z) where the major version could be used as an alias if you wanted to ensure that your dependencies are locked on that major version.

bizmate commented Oct 4, 2017

Just to add my 1p contribution, first of all I would be interested in the long story for the comment

Apparently nonchalant use of :latest has caused some problems. People will unintentionally upgrade from one version to another by just pulling latest.

As multiple people have suggested above the only strategy that makes sense it to have the :latest tag back. I would also prefer this for production because you want to ensure this version is production solid.
Each company then should implement their own CI integration tests even if for a db at a minimal level. The caused some problems use case is most likely due to lack of integration tests. The suggestion from @tadam-msft in my opinion is not solved by a use of a yearly prefix, unless there is a guarantee that in the same year things will not break, but as previously encouraged a better semantic versioning could be used by releasing more tags (X.Y.Z) where the major version could be used as an alias if you wanted to ensure that your dependencies are locked on that major version.

@ddotlic

This comment has been minimized.

Show comment
Hide comment
@ddotlic

ddotlic Oct 5, 2017

Not having :latest breaks every single habit we've built over the years (months) with Docker.

Since you've asked for more feedback on the Docker Hub, I'll reiterate: please add the :latest tag back, it will make everyone's life easier.

ddotlic commented Oct 5, 2017

Not having :latest breaks every single habit we've built over the years (months) with Docker.

Since you've asked for more feedback on the Docker Hub, I'll reiterate: please add the :latest tag back, it will make everyone's life easier.

@danielpall

This comment has been minimized.

Show comment
Hide comment
@danielpall

danielpall Oct 5, 2017

Definitely raise my hand in asking to keep the :latest tag.

Conforms to the standard that we're used to while dealing with docker

danielpall commented Oct 5, 2017

Definitely raise my hand in asking to keep the :latest tag.

Conforms to the standard that we're used to while dealing with docker

@danguilherme

This comment has been minimized.

Show comment
Hide comment
@danguilherme

danguilherme Oct 5, 2017

You can also pull :2017-GA if you want to have the GA image specifically

What does "GA" mean?

danguilherme commented Oct 5, 2017

You can also pull :2017-GA if you want to have the GA image specifically

What does "GA" mean?

@JeffStammler

This comment has been minimized.

Show comment
Hide comment
@JeffStammler

JeffStammler Oct 5, 2017

What does "GA" mean?

@danguilherme : GA = "General Availability". It signifies the first release of a major version that is available to everyone. CU = "Cumulative Update" refers to a subsequent update release of a major version that contains fixes/updates that are cumulative from the GA release.

Hope that help!

Jeff, Microsoft

JeffStammler commented Oct 5, 2017

What does "GA" mean?

@danguilherme : GA = "General Availability". It signifies the first release of a major version that is available to everyone. CU = "Cumulative Update" refers to a subsequent update release of a major version that contains fixes/updates that are cumulative from the GA release.

Hope that help!

Jeff, Microsoft

@maartenvana

This comment has been minimized.

Show comment
Hide comment
@maartenvana

maartenvana Oct 5, 2017

You have just broken every single build/test script that gets the latest version including mine, there is a reason why specific versions and latest exist side by side! It's nice you want to have developers specify which version and "help them", but is this really needed for most people who use this image for testing/local development purposes, do you have any data on this? I cannot believe there are actually people running this image in production?

Until when will this 2017 version be available? You guys just killed the previous version of the image instantly(?) so what is stopping you from doing the same thing with 2017 in a year? If this is the "right thing" to do, apparently instantly abandoning the previous version was also the right thing to do now.

Apparently nonchalant use of :latest has caused some problems. People will unintentionally upgrade from one version to another by just pulling latest.

Thank you for deciding what I should do, I thought adding :latest or nothing to a docker image name is me saying explicitly I always want the latest version. If we would introduce this for all images I would have to regularly check all docker hub pages to see if there is a new version. Yes nonchalant use might introduce a problem, but was there even a versioned version of the image available before?

maartenvana commented Oct 5, 2017

You have just broken every single build/test script that gets the latest version including mine, there is a reason why specific versions and latest exist side by side! It's nice you want to have developers specify which version and "help them", but is this really needed for most people who use this image for testing/local development purposes, do you have any data on this? I cannot believe there are actually people running this image in production?

Until when will this 2017 version be available? You guys just killed the previous version of the image instantly(?) so what is stopping you from doing the same thing with 2017 in a year? If this is the "right thing" to do, apparently instantly abandoning the previous version was also the right thing to do now.

Apparently nonchalant use of :latest has caused some problems. People will unintentionally upgrade from one version to another by just pulling latest.

Thank you for deciding what I should do, I thought adding :latest or nothing to a docker image name is me saying explicitly I always want the latest version. If we would introduce this for all images I would have to regularly check all docker hub pages to see if there is a new version. Yes nonchalant use might introduce a problem, but was there even a versioned version of the image available before?

@JeffStammler

This comment has been minimized.

Show comment
Hide comment
@JeffStammler

JeffStammler Oct 9, 2017

:latest tag is BACK!

Based on community feedback, we have decided to add the :latest tag back to our repo on Docker Hub. There are now 3 tags that you can use.

  • :2017-GA should be used if you explicitly want to stay on the GA version of SQL Server 2017.
  • :2017-latest should be used if you want the latest updated cumulative version of SQL Server 2017.
  • :latest should be used if you want the latest updated cumulative version of the most recent GA version of SQL Server. Using this will also bump you to the next major version (when it's available).

Thanks for all of your feedback!

Jeff, Microsoft

JeffStammler commented Oct 9, 2017

:latest tag is BACK!

Based on community feedback, we have decided to add the :latest tag back to our repo on Docker Hub. There are now 3 tags that you can use.

  • :2017-GA should be used if you explicitly want to stay on the GA version of SQL Server 2017.
  • :2017-latest should be used if you want the latest updated cumulative version of SQL Server 2017.
  • :latest should be used if you want the latest updated cumulative version of the most recent GA version of SQL Server. Using this will also bump you to the next major version (when it's available).

Thanks for all of your feedback!

Jeff, Microsoft

@twright-msft

This comment has been minimized.

Show comment
Hide comment
@twright-msft

twright-msft Oct 9, 2017

Collaborator

Thanks @JeffStammler and thanks everybody for the feedback and patience on this! We're still trying to find the right balance between licensing controls and making the software easy to acquire.

Just want to restate this for folks though... If you are using :latest in production and are using a paid edition of SQL Server, please ensure that you have the correct licenses in place when you are pulling the next major release of SQL Server and deploying into production. For example, let's say that you put the current image into production using MSSQL_PID=Standard. That presumes that you have a license for SQL Server 2017 for that container. Now, let's say that we release SQL Server 201x (next major release of SQL Server) and we move the :latest tag forward to that 201x image. When you deploy that into production you need to have a license for 201x. You can either buy a license for 201x or even better if you bought SQL Server 2017 with software assurance then as long as SQL Server 201x comes out within 3 years of your purchase date then you are entitled to 201x.

Hope that makes sense! If you have any licensing questions, please see the updated licensing guide or ask them here.

Thanks!

Collaborator

twright-msft commented Oct 9, 2017

Thanks @JeffStammler and thanks everybody for the feedback and patience on this! We're still trying to find the right balance between licensing controls and making the software easy to acquire.

Just want to restate this for folks though... If you are using :latest in production and are using a paid edition of SQL Server, please ensure that you have the correct licenses in place when you are pulling the next major release of SQL Server and deploying into production. For example, let's say that you put the current image into production using MSSQL_PID=Standard. That presumes that you have a license for SQL Server 2017 for that container. Now, let's say that we release SQL Server 201x (next major release of SQL Server) and we move the :latest tag forward to that 201x image. When you deploy that into production you need to have a license for 201x. You can either buy a license for 201x or even better if you bought SQL Server 2017 with software assurance then as long as SQL Server 201x comes out within 3 years of your purchase date then you are entitled to 201x.

Hope that makes sense! If you have any licensing questions, please see the updated licensing guide or ask them here.

Thanks!

@cheenamalhotra

This comment has been minimized.

Show comment
Hide comment
@cheenamalhotra

cheenamalhotra Oct 11, 2017

Member

Thanks @twright-msft @JeffStammler for quick support on providing latest tag again! We are able to fetch docker images as before now.

I hope the documentation gets updated soon on Docker Hub and MSDN.

We are planning to switch our application back to use default "latest" tag, I hope this will be supported for new releases and updated in future as well.

Member

cheenamalhotra commented Oct 11, 2017

Thanks @twright-msft @JeffStammler for quick support on providing latest tag again! We are able to fetch docker images as before now.

I hope the documentation gets updated soon on Docker Hub and MSDN.

We are planning to switch our application back to use default "latest" tag, I hope this will be supported for new releases and updated in future as well.

@JeffStammler

This comment has been minimized.

Show comment
Hide comment
@JeffStammler

JeffStammler Oct 11, 2017

I hope the documentation gets updated soon on Docker Hub and MSDN.

@cheenamalhotra : The documentation on Hub has been updated. The MSDN documentation is still valid - is there something in particular you wanted updated there?

Jeff, Microsoft

JeffStammler commented Oct 11, 2017

I hope the documentation gets updated soon on Docker Hub and MSDN.

@cheenamalhotra : The documentation on Hub has been updated. The MSDN documentation is still valid - is there something in particular you wanted updated there?

Jeff, Microsoft

@cheenamalhotra

This comment has been minimized.

Show comment
Hide comment
@cheenamalhotra

cheenamalhotra Oct 11, 2017

Member

Thanks @JeffStammler

For MSDN documentation I was hoping to see latest/no tag used instead of 2017-latest in Step 1 of 'Pull and run the container image' section similar to what's specified on Docker Hub. Also I believe there is no rc1 tag now, maybe that can be changed to some other valid tag in Note block just to avoid any confusion for a first time user.

And in Step 2 where docker run command is mentioned, and in the parameter listing of docker run command, I feel it would be appropriate to use mssql-server-linux:<tagname> instead of explicit mention of 2017-latest tagname as it should ideally be the same tag that was used in docker pull command.

I feel MSDN documentation could be more generic than to use 2017-latest explicitly since there would be 201x-latest versions in future and MSDN documentation may again be needing an update, but I leave it upto you for making best decision :)

Member

cheenamalhotra commented Oct 11, 2017

Thanks @JeffStammler

For MSDN documentation I was hoping to see latest/no tag used instead of 2017-latest in Step 1 of 'Pull and run the container image' section similar to what's specified on Docker Hub. Also I believe there is no rc1 tag now, maybe that can be changed to some other valid tag in Note block just to avoid any confusion for a first time user.

And in Step 2 where docker run command is mentioned, and in the parameter listing of docker run command, I feel it would be appropriate to use mssql-server-linux:<tagname> instead of explicit mention of 2017-latest tagname as it should ideally be the same tag that was used in docker pull command.

I feel MSDN documentation could be more generic than to use 2017-latest explicitly since there would be 201x-latest versions in future and MSDN documentation may again be needing an update, but I leave it upto you for making best decision :)

@JeffStammler

This comment has been minimized.

Show comment
Hide comment
@JeffStammler

JeffStammler Oct 12, 2017

@cheenamalhotra : We'll be cleaning up the references to the old tags shortly. Currently, 2017-latest and latest tags do the same thing and it's our recommended tag to stay current for the 2017 version of SQL Server. We'll give this some thought and update as needed.

For Step 2, we'll update this after we release an update. Referring to mssql-server-linux:<tagname> is appropriate for a generic reference, but since we only have one version available right now, we wanted to have the docs explicit / simple as possible to follow.

I appreciate the feedback. We don't mind updating the docs as needed, and make more generic references when future versions are available.

Jeff, Microsoft

JeffStammler commented Oct 12, 2017

@cheenamalhotra : We'll be cleaning up the references to the old tags shortly. Currently, 2017-latest and latest tags do the same thing and it's our recommended tag to stay current for the 2017 version of SQL Server. We'll give this some thought and update as needed.

For Step 2, we'll update this after we release an update. Referring to mssql-server-linux:<tagname> is appropriate for a generic reference, but since we only have one version available right now, we wanted to have the docs explicit / simple as possible to follow.

I appreciate the feedback. We don't mind updating the docs as needed, and make more generic references when future versions are available.

Jeff, Microsoft

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment