Commit Graph

143 Commits (ff615dbc4d01b0115e4658ee1a0ed6809b5f88ae)

Author SHA1 Message Date
Brian Goff d8e04f68d3 Add support for metrics plugins
Allows for a plugin type that can be used to scrape metrics.
This is useful because metrics are not neccessarily at a standard
location... `--metrics-addr` must be set, and must currently be a TCP
socket.
Even if metrics are done via a unix socket, there's no guarentee where
the socket may be located on the system, making bind-mounting such a
socket into a container difficult (and racey, failure-prone on daemon
restart).

Metrics plugins side-step this issue by always listening on a unix
socket and then bind-mounting that into a known path in the plugin
container.

Note there has been similar work in the past (and ultimately punted at
the time) for consistent access to the Docker API from within a
container.

Why not add metrics to the Docker API and just provide a plugin with
access to the Docker API? Certainly this can be useful, but gives a lot
of control/access to a plugin that may only need the metrics. We can
look at supporting API plugins separately for this reason.

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
2017-06-02 00:11:05 +00:00
Michael Friis 542af38ce5 fix typo in plugins_logging.md
Signed-off-by: Michael Friis <friism@gmail.com>
2017-06-02 00:11:04 +00:00
yuexiao-wang 852a861b8e fix errors in config
Signed-off-by: yuexiao-wang <wang.yuexiao@zte.com.cn>
2017-06-02 00:11:04 +00:00
Julien Kassar ba5a2dc787 Update legacy_plugins.md to include HBM authz plugin
Signed-off-by: Julien Kassar <github@kassisol.com>
2017-06-02 00:11:04 +00:00
Alfred Landrum 4b8712eacb Let graphdrivers declare diff stream fidelity
This allows graphdrivers to declare that they can reproduce the original
diff stream for a layer. If they do so, the layer store will not use
tar-split processing, but will still verify the digest on layer export.
This makes it easier to experiment with non-default diff formats.

Signed-off-by: Alfred Landrum <alfred.landrum@docker.com>
2017-06-02 00:11:02 +00:00
Brian Goff 114cc6ca3a Implement plugins for logging drivers
Logging plugins use the same HTTP interface as other plugins for basic
command operations meanwhile actual logging operations are handled (on
Unix) via a fifo.

The plugin interface looks like so:

```go
type loggingPlugin interface {
  StartLogging(fifoPath string, loggingContext Context) error
  StopLogging(fifoPath)
```

This means a plugin must implement `LoggingDriver.StartLogging` and
`LoggingDriver.StopLogging` endpoints and be able to consume the passed
in fifo.

Logs are sent via stream encoder to the fifo encoded with protobuf.

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
2017-06-02 00:11:02 +00:00
Misty Stanley-Jones 0e86bfb1e0 Escape some double brackets
Signed-off-by: Misty Stanley-Jones <misty@docker.com>
2017-06-02 00:11:01 +00:00
Sebastiaan van Stijn 82f097e8d5 Merge pull request #32265 from breuner/patch-1
Updated legacy_plugins.md to include BeeGFS plugin
(cherry picked from commit d0057bd12dae5276b83e931e9e9ea185c58486a2)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2017-06-02 00:11:01 +00:00
JimGalasyn 64704a2a80 Delete extraneous H1 title
Signed-off-by: JimGalasyn <jim.galasyn@docker.com>
2017-06-02 00:11:00 +00:00
Anusha Ragunathan c9f1050226 Add pid host support
Tested using global-net-plugin-ipc which sets PidHost in config.json.

Plugins might need access to host pid namespace. Add support for that.
Tested using aragunathan/global-net-plugin-ipc which sets "pidhost" in
config.json. Observed using `readlink /proc/self/ns/pid` that plugin and
host have the same ns.

Signed-off-by: Anusha Ragunathan <anusha.ragunathan@docker.com>
2017-06-02 00:10:59 +00:00
Anusha Ragunathan 9111051d98 Add support in plugin config for accessing host ipc namespace.
Plugins might need access to host ipc namespace. A good usecase is
a volume plugin running iscsi multipath commands that need access to
host kernel locks.
Tested with a custom plugin (aragunathan/global-net-plugin-full) that's
built with `"ipchost" : true` in config.json. Observed using
`readlink /proc/self/ns/ipc` that plugin and host have the same ns.

Signed-off-by: Anusha Ragunathan <anusha.ragunathan@docker.com>
2017-06-02 00:10:59 +00:00
Jimmy Song 3e4d1cacf4 modify docker plugin sshfs entrypoint
Signed-off-by: Jimmy Song <rootsongjc@gmail.com>
2017-06-02 00:10:58 +00:00
Keith Hudgins 01468292d6 added listing for Nimble Storage's volume plugin
Signed-off-by: Keith Hudgins <greenman@greenman.org>

updated nimble plugin url
2017-06-02 00:10:57 +00:00
scjane 2c9f862eaf Update index.md
Signed-off-by: Wang Jie <wangjie5@chinaskycloud.com>
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2017-06-02 00:10:56 +00:00
Anusha Ragunathan 93344b57f3 Service creation using network plugin filters.
Signed-off-by: Anusha Ragunathan <anusha.ragunathan@docker.com>
2017-06-02 00:10:56 +00:00
Misty Stanley-Jones f36bcf1acd Fix some Liquid errors
Signed-off-by: Misty Stanley-Jones <misty@docker.com>
2017-06-02 00:10:55 +00:00
Misty Stanley-Jones 38ac6860eb Update plugin_volume apidocs for v2
Signed-off-by: Misty Stanley-Jones <misty@docker.com>
2017-06-02 00:10:55 +00:00
Anusha Ragunathan ab7522c939 Add plugin socket related debug docs.
Signed-off-by: Anusha Ragunathan <anusha.ragunathan@docker.com>
2017-06-02 00:10:55 +00:00
Anusha Ragunathan c76dcd33f7 Add plugin debug docs.
Doc fix for #30761

Signed-off-by: Anusha Ragunathan <anusha.ragunathan@docker.com>
2017-06-02 00:10:53 +00:00
Brian Goff df4e570ff4 Make propagated mount persist outside rootfs
This persists the "propagated mount" for plugins outside the main
rootfs. This enables `docker plugin upgrade` to not remove potentially
important data during upgrade rather than forcing plugin authors to hard
code a host path to persist data to.

Also migrates old plugins that have a propagated mount which is in the
rootfs on daemon startup.

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
2017-06-02 00:10:52 +00:00
Yong Tang ecfe6ab218 Add `capability` filter to `docker plugin ls`
This fix adds `--filter capability=[volumedriver|authz]` to `docker plugin ls`.

The related docs has been updated.

An integration test has been added.

Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
2017-06-02 00:10:51 +00:00
David Williamson b8df00a4b4 Provide password to volume create command
* Depending on the host configuration between the docker engine and the remote host we wish to mount using sshfs, a password may be required.
* Confirmed syntax for optional parameter with @vieux
* Verified change works as desired with engine running on Ubuntu host and mounting a volume from a file system on a Mac.

Signed-off-by: David Williamson <david.williamson@docker.com>
2017-06-02 00:10:51 +00:00
Anusha Ragunathan 79479e040f Add docs for service create based on plugins.
Signed-off-by: Anusha Ragunathan <anusha.ragunathan@docker.com>
2017-06-02 00:10:51 +00:00
Janonymous 7953201f9d Fix json format of plugin
Signed-off-by: Janonymous <janonymous.codevulture@gmail.com>
2017-06-02 00:10:51 +00:00
Tibor Vass f75cb34afa plugins: add example docs for a rexray plugin
Signed-off-by: Tibor Vass <tibor@docker.com>
2017-06-02 00:10:49 +00:00
Zhang Wei b5758e62de Fix some typos
Signed-off-by: Zhang Wei <zhangwei555@huawei.com>
2017-06-02 00:10:49 +00:00
Tibor Vass 8c3f18ca6d plugins: rename DeviceCreation to AllowAllDevices
Signed-off-by: Tibor Vass <tibor@docker.com>
2017-06-02 00:10:48 +00:00
Victor Vieux 63aa05d3f7 replace no-remove by sample-volume-plugin in docs
Signed-off-by: Victor Vieux <vieux@docker.com>
2017-06-02 00:10:47 +00:00
Ovidio Mallo b839363db9 Reference new DigitalOcean plugin (Closes #29729)
Signed-off-by: Ovidio Mallo <ovidio.mallo@gmail.com>
2017-06-02 00:10:47 +00:00
zhenghenghuo a724a5d8c9 fix some typos
Signed-off-by: zhenghenghuo <zhenghenghuo@zju.edu.cn>

try to pass test

Signed-off-by: zhenghenghuo <zhenghenghuo@zju.edu.cn>

try to pass the test

Signed-off-by: zhenghenghuo <zhenghenghuo@zju.edu.cn>
2017-06-02 00:10:46 +00:00
yuexiao-wang fcb3a0e88b Update 'ID' field for 'docker plugin ls'
Signed-off-by: yuexiao-wang <wang.yuexiao@zte.com.cn>
2017-06-02 00:10:46 +00:00
Brian Goff a59544ff3d Moves graphdriver plugn docs out of experimental
Also updates some of the structures being sent so plugins are getting
all the new options.

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
2017-06-02 00:10:46 +00:00
Tonis Tiigi b5b3dd4c6b Implement content addressability for plugins
Move plugins to shared distribution stack with images.

Create immutable plugin config that matches schema2 requirements.

Ensure data being pushed is same as pulled/created.

Store distribution artifacts in a blobstore.

Run init layer setup for every plugin start.

Fix breakouts from unsafe file accesses.

Add support for `docker plugin install --alias`

Uses normalized references for default names to avoid collisions when using default hosts/tags.

Some refactoring of the plugin manager to support the change, like removing the singleton manager and adding manager config struct.

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
Signed-off-by: Derek McGowan <derek@mcgstyle.net>
2017-06-02 00:10:46 +00:00
Hongbin Lu 08ba19c291 Add Fuxi Volume Plugin to the docs
Signed-off-by: Hongbin Lu <hongbin034@gmail.com>
2017-06-02 00:10:45 +00:00
Victor Vieux 5bfa17e58b remove old media type compat for plugins
Signed-off-by: Victor Vieux <vieux@docker.com>
2017-06-02 00:10:44 +00:00
lixiaobing10051267 2373288938 replace env description with args in extend config
Signed-off-by: lixiaobing10051267 <li.xiaobing1@zte.com.cn>
2017-06-02 00:10:44 +00:00
Tibor Vass 5a84f77819 plugins: container-rootfs-relative paths
Legacy plugins expect host-relative paths (such as for Volume.Mount).
However, a containerized plugin cannot respond with a host-relative
path. Therefore, this commit modifies new volume plugins' paths in Mount
and List to prepend the container's rootfs path.

This introduces a new PropagatedMount field in the Plugin Config.
When it is set for volume plugins, RootfsPropagation is set to rshared
and the path specified by PropagatedMount is bind-mounted with rshared
prior to launching the container. This is so that the daemon code can
access the paths returned by the plugin from the host mount namespace.

Signed-off-by: Tibor Vass <tibor@docker.com>
2017-06-02 00:10:43 +00:00
Victor Vieux b82e761088 update plugin example
Signed-off-by: Victor Vieux <victorvieux@gmail.com>

cleanup whitespace formatting

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2017-06-02 00:10:42 +00:00
Misty Stanley-Jones d5b3df0c2f Fix some redirect loops and problems
Signed-off-by: Misty Stanley-Jones <misty@docker.com>
2017-06-02 00:10:42 +00:00
lixiaobing10051267 be6e3311f2 modify invalid url in plugins_network.md
Signed-off-by: lixiaobing10051267 <li.xiaobing1@zte.com.cn>
2017-06-02 00:10:41 +00:00
Tibor Vass b70edf410d plugins: misc fixes
Rename variable to reflect manifest -> config renaming
Populate Description fields when computing privileges.
Refactor/reuse code from daemon/oci_linux.go

Signed-off-by: Tibor Vass <tibor@docker.com>
2017-06-02 00:10:40 +00:00
Ben Firshman 2cfcc8a8fa Rename Remote API to Engine API
Implementation of https://github.com/docker/docker/issues/28319

Signed-off-by: Ben Firshman <ben@firshman.co.uk>
2017-06-02 00:10:40 +00:00
Sebastiaan van Stijn e0ce0361ba add note that windows does not support managed plugins
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2017-06-02 00:10:40 +00:00
Riyaz Faizullabhoy 6393eac011 Edits to plugin docs after building authz plugin
Signed-off-by: Riyaz Faizullabhoy <riyaz.faizullabhoy@docker.com>
2017-06-02 00:10:39 +00:00
Victor Vieux 410d4ce7ae move plugins out of experimental
Signed-off-by: Victor Vieux <vieux@docker.com>
2017-06-02 00:10:37 +00:00
Victor Vieux fdfcbe778a rename plugin manifest
Signed-off-by: Victor Vieux <vieux@docker.com>
2017-06-02 00:10:36 +00:00
Gaetan de Villele 4126b5526c fix frontmatter keywords value type (string, instead of []string)
Signed-off-by: Gaetan de Villele <gdevillele@gmail.com>
2017-06-02 00:10:31 +00:00
lixiaobing10051267 9b109cd9a7 fill all the rest invalid address because no related directory
Signed-off-by: lixiaobing10051267 <li.xiaobing1@zte.com.cn>
2017-06-02 00:10:30 +00:00
lixiaobing10051267 2603a9c1dd fill the complete address because of no userguide directory
Signed-off-by: lixiaobing10051267 <li.xiaobing1@zte.com.cn>
2017-06-02 00:10:30 +00:00
Misty Stanley-Jones 7ec82562ce Rewrites to Developing Plugins topic
Signed-off-by: Misty Stanley-Jones <misty@docker.com>
2017-06-02 00:10:26 +00:00