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
RFC: add advanced "csv" syntax for "--net" / "--network" #31964
Comments
👍 on the idea. The discussion on task specific options and templating to go with it requires more discussions. There are cases where even such an option may be limiting especially when the task specific option is completely localized to the node where it is being scheduled. So, in order to keep this proposal manageable , let us try and address the existing limitation and options and accomodate it with the new CSV format. |
docker supports alternate OCI runtimes including virtual machine based runtimes. In certian cases network plugins can optionally choose to support creation of virtual machine friendly interfaces using optional network options. This is illustrated here with the hint being used by the macvlan driver to create a macvtap interface vs a macvlan interface when the runtime is known to be a VM based runtime. docker run --runtime=cor -it --net=pub_net --network "name=pub_net,runtime=namespace" alpine sh This is currently based off of moby/moby#27638 However this will be implemented as per the proposal moby/moby#31964 Signed-off-by: Manohar Castelino <manohar.r.castelino@intel.com>
LGTM |
@thaJeztah The proposal looks good. A few things to watch out for:
👍 👍 👍 🎸 |
I would love to see the
Any chance of this happening? Edit: I guess there's more than one DNS name, for stacks we have |
#33130 provides name and alias through the CSV syntax. Unfortunately it is undocumented. I would really like to see |
Yes, #33130 / docker/cli#62 adds initial options for services; docker/cli#843 is addressing the missing documentation |
CLI implementation for |
docker run
anddocker service create
currently don't support adding a container or service to multiple networks. The reason for this is that there is a number of options that can be set per network (for example, network-scoped aliases through--network-alias
, a fixed IP-address on a network through--ip
/--ip6
).The current situation severely limits networking options for services, as it's currently not possible to;
docker service update
) after a service is createddocker stack deploy
)The advanced "csv" syntax (as is used for
docker service create --mount
) solves this limitation by grouping options in a single flag, allowing options to be set per mount. The same can be done for networks.Proposed change
I want to propose adding the same syntax to
--network
and solve this limitation. The advanced syntax should support all network-related options that can be set currently ondocker run
anddocker network connect
, for example;Suggested options;
name
string
--network
alias
string[]
--network-alias
ip
string
--ip
ip6
string
--ip6
link
string
--link
link-local-ip
string[]
--link-local-ip
In addition, advanced networking options (as are proposed in #27638) can be passed, for example;
ipam-opt
(options for the IPAM plugin/driver)opt
(driver-specific options for the network)Possibly this would also allow options, such as bandwidth limitation per-network for a container/service (see #20794, #27809, #26767, #27846)
To be discussed - per-task/container options
For services, some options can be ambiguous, for example, an alias, or IP-address can apply to a service as a whole, or per task / container. Some thoughts if we want options to be applied to individual tasks;
container-ip
,container-alias
)container-alias={{.Service}}.{{.Slot}}.foobar
)container-ip=172.30.100.x
) - haven't given this one much thought, perhaps that's an IPAM option.To be discussed - auto-creation
Do we want the
--network
flag to create networks if they don't exist, or keep the current behavior, and require the network to be created up front?Personally, I think requiring a network to exist is a cleaner approach (better separation of concerns).
Related issues;
service create
/service update
([epic] add more options toservice create
/service update
#25303)--network-alias
option missing on docker service create --network-alias option missing on docker service create (as well as corresponding options on docker service update) #24787docker run
(Is it possible to bind a container to multi networks? #17750, Allow containers to be connected to networks before it is started #17289, Add support multiple network mode on docker create/run #17796)ping @docker/core-engine-maintainers @docker/core-libnetwork-maintainers
The text was updated successfully, but these errors were encountered: