hey ryan,
there are two deployment use-cases i generally have :
- production : i want to consider carefully what i deploy, and refer to
a specific image. a versioned tag works well here
- development : i want to iterate quickly and something like a branch
(movable tag) works really well here, à la heroku :
git-push => commit-hook => build docker-image =>
curl-to-marathon
it's the development use-case that pull on every launch supports best
would an option in the ContainerInfo to pull on every launch be
reasonable ?
i'm happy to do a PR if that would be helpful !
:craig
On 5 Sep 2014, at 9:07, Ryan Thomas wrote:
Whilst this is somewhat unrelated to the mesos implementation, I think
it
is generally good practice to have immutable tags on the images, this
is
something I dislike about docker :)
Whist the gc of old images will eventually become a problem, it will
really
only be the layer delta that is consumed with each new tag. But I
think
yes, there would need to be some mechanism to clear out the images in
the
local registry.
ryan
On 5 Sep 2014 18:03, "mccraig mccraig" <[email protected]>
wrote:
ah, so i will have to use a different tag to update an app
one immediate problem i can see is that it makes garbage collecting
old
docker images from slaves harder : currently i update the image
associated
with a tag and restart tasks to update the running app, then
occasionally a
cron job to remove all docker images with no tag
if every updated image has a new tag it will be harder to figure out
which
images to remove... perhaps any with no running container, though
that
could lead to unnecessary pulls and slower restarts of failed tasks
:craig
On 5 Sep 2014, at 08:43, Ryan Thomas <[email protected]> wrote:
Hey Craig,
docker run will attempt a pull of the image if it cannot find a
matching
image and tag in its local repository.
So it should only pull on the first run of a given tag.
ryan
On 5 Sep 2014 17:41, "mccraig mccraig" <[email protected]>
wrote:
hi tim,
if it doesn't pull on every run, when will it pull ?
:craig
On 5 Sep 2014, at 07:05, Tim Chen <[email protected]> wrote:
Hi Maxime,
It is a very valid concern and that's why I've added a patch that
should
go out in 0.20.1 to not do a docker pull on every run anymore.
Mesos will still try to docker pull when the image isn't available
locally (via docker inspect), but only once.
The downside ofcourse is that you're not able to automatically get
the
latest tagged image, but I think it's worth while price to may to
gain the
benefits of not depending on registry, able to run local images and
more.
Tim
On Thu, Sep 4, 2014 at 10:50 PM, Maxime Brugidou <
[email protected]> wrote:
Hi,
The current Docker integration in 0.20 does a "docker pull" from
the
registry before running any task. This means that your entire Mesos
cluster
becomes unusable if the registry goes down.
The docs allow you to configure a custom .dockercfg for your tasks
to
point to a private docker registry.
However it is not easy to run an HA docker registry. The
docker-registry
project recommend using S3 storage buy this is definitely not an
option for
some people.
I know that for regular artifacts, Mesos can use HDFS storage and
you
can run your HDFS datanodes as Mesos tasks.
So even if I attempt to have a docker registry storage in HDFS
(which is
not supported by docker-registry at the moment), I am stuck on a
chicken
and egg problem. I want to have as little services outside of Mesos
as
possible and it is hard to maintain HA services (especially outside
of
Mesos).
Is there anyone running Mesos with Docker in production without S3?
I am
trying to make all the services outside of Mesos (the "infra"
services that
are necessary to run Mesos like DNS, Haproxy, Chef server... etc)
either HA
or not critical for the cluster to run. The docker registry is a
new piece
of infra outside of Mesos that is critical...
Best,
Maxime