Conversation
Extensions for Docker MachineThis PR is to address Proposal / Issue #1765 PremiseDocker Machine gets you a "docker ready" host, but what about everything else that integrates with Docker Engine? Docker Engine 1.8 released the pluggable architecture for 3rd party network and storage extensions. However, most of these require installation processes that must be done after the host is provisioned. The Docker Machine Extensibility feature is an interface for specifying the installation of Docker Engine Plugins to install during the host deployment. Extensions Supported:SummaryExtensions for Docker Machine is a pluggable architecture to install Docker Engine Plugins as an additional command line argument.
The name of the The
A generic installation of a service using only commands lines:
A simple example of installing a service (Weave as an example):
a more complex example with extensions running in priority:
Deeper DiveThe The name of the extension is checked to see if a registered extension exists. If there is a matching registered extension, the paramters in the
Before the installation begins, the
The installation of any extension is performed as the final step during the docker-machine configuration process. This is denoted in the
|
Hi @kacole2 , I appreciate the contribution but I still don't quite understand the use case and due to the added complexity, adding a change such as this is an inherently risky move for a variety of reasons. Can we please close this and continue the discussion at : #1765 ? I want to help your use case, but the solution has to be constructed in a general manner as we really are trying to trim down the scope of Machine and allow for more extension / flexibility in the basic mechanics.
EDIT: Oops, yeah, copy-paste error on the issue. |
this will allow 3rd parties to install their docker extensions on the host as a part of the host installation/creation process. Signed-off-by: Kendrick Coleman <kendrickcoleman@gmail.com>
@nathanleclaire I believe the issue is #1765 that you were referring to. |
Relating to the general way of achieving extensibility. I believe @kacole2's approach here tends to be a very simple way to extend whichever functionality during the machine deployment. With priority, having the ability to set environment variables, copy files, run commands, and do so against specific OS's seems like it fits the bill for simple and generic operations.
|
@nathanleclaire There is alignment that can be made here that might make more sense. If you look at the purpose of the Dockefile in ensuring a base container is configured and ready for usage this method tends to make sense. This method or file could even be the Machinefile. It's purpose here though would be to prepare a base machine that was deployed with whichever things it needs at an OS level to be ready. If you look at the params in the Generic key above, it even has copy/run/env similar to what is achieved w a Dockerfile. |
@clintonskitson I understand that and I am definitely in favor of declarative configuration, however such a change is not something to be taken lightly. There are so many stakeholders at play in such a decision that it is very preferable to have a discussion first and see what everyone is interested in and considers to be a robust solution. Supporting such a declarative config is easy to put in, but very hard to take out down the line if it turns out that there are considerations not addressed in the original model. |
@nathanleclaire Very much so. Is there another thread better suited with the active conversation for this functionality? |
@nathanleclaire some other use cases (for generic functionality)
All of these can be done with the generic extension. |
@clintonskitson It's not specifically suited to plugins, but the type of feature this PR introduces ties closely to the proposal outlined here, so you might want to take a look: @kacole2 Again, I'm not that I'm against such a feature or don't see the reasons why it'd be useful, it's that this pull request is very wide-ranging in terms of features and implications for users of Machine. Additionally, I'm not interested in supporting 3rd party extensions such as Weave or Rexray directly in the core. So, I'd suggest to please research what the maintainers and others have suggested and/or proposed in the past and begin an issue discussion which would address everyone's concerns, and/or a model for pluggability that would enable you to implement such features yourself. |
this will allow 3rd parties to install their docker extensions on the
host as a part of the host installation/creation process.
Signed-off-by: Kendrick Coleman kendrickcoleman@gmail.com