[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug#33893] [PATCH v5 3/4] services: Add docker.

From: Ludovic Courtès
Subject: [bug#33893] [PATCH v5 3/4] services: Add docker.
Date: Sun, 06 Jan 2019 21:31:00 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux)

Danny Milosavljevic <address@hidden> skribis:

> * gnu/services/docker.scm: New file.
> * gnu/ (GNU_SYSTEM_MODULES): Add it.
> * doc/guix.texi (Miscellaneous Services): Document the service.


> address@hidden docker

“Docker” with a capital.

> address@hidden Docker Service
> +
> +The @code{(gnu services docker)} module provides the following service.
> +
> address@hidden {Scheme Variable} docker-service-type
> +
> +This is a service that runs @url{,Docker}, a daemon that
> +provides container functionality.
> +

We’re missing address@hidden defvr” I guess.

I think we shouldn’t propagate the narrative that Docker = container.
So what about something like:

  This is the type of the service that runs @url{…, Docker}, a daemon
  that can execute application bundles (sometimes referred to as
  ``containers'') in isolated environments.


Also could you document ‘docker-configuration’ as well?


> +;; TODO: Refactor out into its own module?  How to depend on it then?
> +(define (containerd-shepherd-service config)
> +  (let* ((package (docker-configuration-containerd config)))
> +    (shepherd-service
> +           (documentation "containerd daemon.")
> +           (provision '(containerd))
> +           (start #~(make-forkexec-constructor
> +                     (list (string-append #$package "/bin/containerd"))))
> +           (stop #~(make-kill-destructor)))))

I suppose there could be a separate ‘containerd-service-type’ if it’s
useful; if it’s not, it’s OK to keep it this way.

As for the dependency, users would have to add both docker and
containerd to their service list, or docker-service-type could extend
containerd-service-type, which would ensure containerd-service-type is
automatically instantiated if it’s not already in the user’s service

> +(define docker-service-type
> +  (service-type (name 'docker)
> +             (extensions
> +                 (list
> +                  (service-extension activation-service-type
> +                                     %docker-activation)
> +                  (service-extension shepherd-root-service-type
> +                                     (lambda args
> +                                       (list (apply 
> containerd-shepherd-service args)
> +                                             (apply docker-shepherd-service 
> args))))

You can make the above (lambda (config) …) instead of (lambda (args) …).

> +                  (service-extension account-service-type
> +                                     (const %docker-accounts))))
> +                (default-value (docker-configuration))))

Please add a ‘description’ field here, and please remove tabs from the
file.  :-)

Could you consider adding a system test for docker/containerd?  Perhaps
we could go as far as using ‘docker-image’ in (guix scripts pack) to
generate an image and make sure ‘docker load’ works, but maybe that’s
too much work.

Thank you,

reply via email to

[Prev in Thread] Current Thread [Next in Thread]