Add `--dns-option` to `docker run` and hide `--dns-opt`
| ... | ... |
@@ -43,7 +43,7 @@ func newCreateCommand(dockerCli *command.DockerCli) *cobra.Command {
|
| 43 | 43 |
flags.VarP(&opts.endpoint.ports, flagPublish, "p", "Publish a port as a node port") |
| 44 | 44 |
flags.Var(&opts.groups, flagGroup, "Set one or more supplementary user groups for the container") |
| 45 | 45 |
flags.Var(&opts.dns, flagDNS, "Set custom DNS servers") |
| 46 |
- flags.Var(&opts.dnsOptions, flagDNSOptions, "Set DNS options") |
|
| 46 |
+ flags.Var(&opts.dnsOption, flagDNSOption, "Set DNS options") |
|
| 47 | 47 |
flags.Var(&opts.dnsSearch, flagDNSSearch, "Set custom DNS search domains") |
| 48 | 48 |
|
| 49 | 49 |
flags.SetInterspersed(false) |
| ... | ... |
@@ -413,7 +413,7 @@ type serviceOptions struct {
|
| 413 | 413 |
mounts opts.MountOpt |
| 414 | 414 |
dns opts.ListOpts |
| 415 | 415 |
dnsSearch opts.ListOpts |
| 416 |
- dnsOptions opts.ListOpts |
|
| 416 |
+ dnsOption opts.ListOpts |
|
| 417 | 417 |
|
| 418 | 418 |
resources resourceOptions |
| 419 | 419 |
stopGrace DurationOpt |
| ... | ... |
@@ -445,12 +445,12 @@ func newServiceOptions() *serviceOptions {
|
| 445 | 445 |
endpoint: endpointOptions{
|
| 446 | 446 |
ports: opts.NewListOpts(ValidatePort), |
| 447 | 447 |
}, |
| 448 |
- groups: opts.NewListOpts(nil), |
|
| 449 |
- logDriver: newLogDriverOptions(), |
|
| 450 |
- dns: opts.NewListOpts(opts.ValidateIPAddress), |
|
| 451 |
- dnsOptions: opts.NewListOpts(nil), |
|
| 452 |
- dnsSearch: opts.NewListOpts(opts.ValidateDNSSearch), |
|
| 453 |
- networks: opts.NewListOpts(nil), |
|
| 448 |
+ groups: opts.NewListOpts(nil), |
|
| 449 |
+ logDriver: newLogDriverOptions(), |
|
| 450 |
+ dns: opts.NewListOpts(opts.ValidateIPAddress), |
|
| 451 |
+ dnsOption: opts.NewListOpts(nil), |
|
| 452 |
+ dnsSearch: opts.NewListOpts(opts.ValidateDNSSearch), |
|
| 453 |
+ networks: opts.NewListOpts(nil), |
|
| 454 | 454 |
} |
| 455 | 455 |
} |
| 456 | 456 |
|
| ... | ... |
@@ -496,7 +496,7 @@ func (opts *serviceOptions) ToService() (swarm.ServiceSpec, error) {
|
| 496 | 496 |
DNSConfig: &swarm.DNSConfig{
|
| 497 | 497 |
Nameservers: opts.dns.GetAll(), |
| 498 | 498 |
Search: opts.dnsSearch.GetAll(), |
| 499 |
- Options: opts.dnsOptions.GetAll(), |
|
| 499 |
+ Options: opts.dnsOption.GetAll(), |
|
| 500 | 500 |
}, |
| 501 | 501 |
StopGracePeriod: opts.stopGrace.Value(), |
| 502 | 502 |
Secrets: nil, |
| ... | ... |
@@ -597,9 +597,9 @@ const ( |
| 597 | 597 |
flagDNS = "dns" |
| 598 | 598 |
flagDNSRemove = "dns-rm" |
| 599 | 599 |
flagDNSAdd = "dns-add" |
| 600 |
- flagDNSOptions = "dns-options" |
|
| 601 |
- flagDNSOptionsRemove = "dns-options-rm" |
|
| 602 |
- flagDNSOptionsAdd = "dns-options-add" |
|
| 600 |
+ flagDNSOption = "dns-option" |
|
| 601 |
+ flagDNSOptionRemove = "dns-option-rm" |
|
| 602 |
+ flagDNSOptionAdd = "dns-option-add" |
|
| 603 | 603 |
flagDNSSearch = "dns-search" |
| 604 | 604 |
flagDNSSearchRemove = "dns-search-rm" |
| 605 | 605 |
flagDNSSearchAdd = "dns-search-add" |
| ... | ... |
@@ -49,9 +49,9 @@ func newUpdateCommand(dockerCli *command.DockerCli) *cobra.Command {
|
| 49 | 49 |
flags.Var(newListOptsVar(), flagMountRemove, "Remove a mount by its target path") |
| 50 | 50 |
flags.Var(newListOptsVar(), flagPublishRemove, "Remove a published port by its target port") |
| 51 | 51 |
flags.Var(newListOptsVar(), flagConstraintRemove, "Remove a constraint") |
| 52 |
- flags.Var(newListOptsVar(), flagDNSRemove, "Remove custom DNS servers") |
|
| 53 |
- flags.Var(newListOptsVar(), flagDNSOptionsRemove, "Remove DNS options") |
|
| 54 |
- flags.Var(newListOptsVar(), flagDNSSearchRemove, "Remove DNS search domains") |
|
| 52 |
+ flags.Var(newListOptsVar(), flagDNSRemove, "Remove a custom DNS server") |
|
| 53 |
+ flags.Var(newListOptsVar(), flagDNSOptionRemove, "Remove a DNS option") |
|
| 54 |
+ flags.Var(newListOptsVar(), flagDNSSearchRemove, "Remove a DNS search domain") |
|
| 55 | 55 |
flags.Var(&opts.labels, flagLabelAdd, "Add or update a service label") |
| 56 | 56 |
flags.Var(&opts.containerLabels, flagContainerLabelAdd, "Add or update a container label") |
| 57 | 57 |
flags.Var(&opts.env, flagEnvAdd, "Add or update an environment variable") |
| ... | ... |
@@ -61,9 +61,9 @@ func newUpdateCommand(dockerCli *command.DockerCli) *cobra.Command {
|
| 61 | 61 |
flags.Var(&opts.constraints, flagConstraintAdd, "Add or update a placement constraint") |
| 62 | 62 |
flags.Var(&opts.endpoint.ports, flagPublishAdd, "Add or update a published port") |
| 63 | 63 |
flags.Var(&opts.groups, flagGroupAdd, "Add an additional supplementary user group to the container") |
| 64 |
- flags.Var(&opts.dns, flagDNSAdd, "Add or update custom DNS servers") |
|
| 65 |
- flags.Var(&opts.dnsOptions, flagDNSOptionsAdd, "Add or update DNS options") |
|
| 66 |
- flags.Var(&opts.dnsSearch, flagDNSSearchAdd, "Add or update custom DNS search domains") |
|
| 64 |
+ flags.Var(&opts.dns, flagDNSAdd, "Add or update a custom DNS server") |
|
| 65 |
+ flags.Var(&opts.dnsOption, flagDNSOptionAdd, "Add or update a DNS option") |
|
| 66 |
+ flags.Var(&opts.dnsSearch, flagDNSSearchAdd, "Add or update a custom DNS search domain") |
|
| 67 | 67 |
|
| 68 | 68 |
return cmd |
| 69 | 69 |
} |
| ... | ... |
@@ -274,7 +274,7 @@ func updateService(flags *pflag.FlagSet, spec *swarm.ServiceSpec) error {
|
| 274 | 274 |
} |
| 275 | 275 |
} |
| 276 | 276 |
|
| 277 |
- if anyChanged(flags, flagDNSAdd, flagDNSRemove, flagDNSOptionsAdd, flagDNSOptionsRemove, flagDNSSearchAdd, flagDNSSearchRemove) {
|
|
| 277 |
+ if anyChanged(flags, flagDNSAdd, flagDNSRemove, flagDNSOptionAdd, flagDNSOptionRemove, flagDNSSearchAdd, flagDNSSearchRemove) {
|
|
| 278 | 278 |
if cspec.DNSConfig == nil {
|
| 279 | 279 |
cspec.DNSConfig = &swarm.DNSConfig{}
|
| 280 | 280 |
} |
| ... | ... |
@@ -586,12 +586,12 @@ func updateDNSConfig(flags *pflag.FlagSet, config **swarm.DNSConfig) error {
|
| 586 | 586 |
sort.Strings(newConfig.Search) |
| 587 | 587 |
|
| 588 | 588 |
options := (*config).Options |
| 589 |
- if flags.Changed(flagDNSOptionsAdd) {
|
|
| 590 |
- values := flags.Lookup(flagDNSOptionsAdd).Value.(*opts.ListOpts).GetAll() |
|
| 589 |
+ if flags.Changed(flagDNSOptionAdd) {
|
|
| 590 |
+ values := flags.Lookup(flagDNSOptionAdd).Value.(*opts.ListOpts).GetAll() |
|
| 591 | 591 |
options = append(options, values...) |
| 592 | 592 |
} |
| 593 | 593 |
options = removeDuplicates(options) |
| 594 |
- toRemove = buildToRemoveSet(flags, flagDNSOptionsRemove) |
|
| 594 |
+ toRemove = buildToRemoveSet(flags, flagDNSOptionRemove) |
|
| 595 | 595 |
for _, option := range options {
|
| 596 | 596 |
if _, exists := toRemove[option]; !exists {
|
| 597 | 597 |
newConfig.Options = append(newConfig.Options, option) |
| ... | ... |
@@ -142,8 +142,8 @@ func TestUpdateDNSConfig(t *testing.T) {
|
| 142 | 142 |
// Invalid dns search domain |
| 143 | 143 |
assert.Error(t, flags.Set("dns-search-add", "example$com"), "example$com is not a valid domain")
|
| 144 | 144 |
|
| 145 |
- flags.Set("dns-options-add", "ndots:9")
|
|
| 146 |
- flags.Set("dns-options-rm", "timeout:3")
|
|
| 145 |
+ flags.Set("dns-option-add", "ndots:9")
|
|
| 146 |
+ flags.Set("dns-option-rm", "timeout:3")
|
|
| 147 | 147 |
|
| 148 | 148 |
config := &swarm.DNSConfig{
|
| 149 | 149 |
Nameservers: []string{"3.3.3.3", "5.5.5.5"},
|
| ... | ... |
@@ -531,7 +531,7 @@ __docker_container_subcommand() {
|
| 531 | 531 |
"($help)*--device-write-iops=[Limit the write rate (IO per second) to a device]:device:IO rate: " |
| 532 | 532 |
"($help)--disable-content-trust[Skip image verification]" |
| 533 | 533 |
"($help)*--dns=[Custom DNS servers]:DNS server: " |
| 534 |
- "($help)*--dns-opt=[Custom DNS options]:DNS option: " |
|
| 534 |
+ "($help)*--dns-option=[Custom DNS options]:DNS option: " |
|
| 535 | 535 |
"($help)*--dns-search=[Custom DNS search domains]:DNS domains: " |
| 536 | 536 |
"($help)*"{-e=,--env=}"[Environment variables]:environment variable: "
|
| 537 | 537 |
"($help)--entrypoint=[Overwrite the default entrypoint of the image]:entry point: " |
| ... | ... |
@@ -50,7 +50,7 @@ Options: |
| 50 | 50 |
--device-write-iops value Limit write rate (IO per second) to a device (default []) |
| 51 | 51 |
--disable-content-trust Skip image verification (default true) |
| 52 | 52 |
--dns value Set custom DNS servers (default []) |
| 53 |
- --dns-opt value Set DNS options (default []) |
|
| 53 |
+ --dns-option value Set DNS options (default []) |
|
| 54 | 54 |
--dns-search value Set custom DNS search domains (default []) |
| 55 | 55 |
--entrypoint string Overwrite the default ENTRYPOINT of the image |
| 56 | 56 |
-e, --env value Set environment variables (default []) |
| ... | ... |
@@ -54,7 +54,7 @@ Options: |
| 54 | 54 |
--device-write-iops value Limit write rate (IO per second) to a device (default []) |
| 55 | 55 |
--disable-content-trust Skip image verification (default true) |
| 56 | 56 |
--dns value Set custom DNS servers (default []) |
| 57 |
- --dns-opt value Set DNS options (default []) |
|
| 57 |
+ --dns-option value Set DNS options (default []) |
|
| 58 | 58 |
--dns-search value Set custom DNS search domains (default []) |
| 59 | 59 |
--entrypoint string Overwrite the default ENTRYPOINT of the image |
| 60 | 60 |
-e, --env value Set environment variables (default []) |
| ... | ... |
@@ -24,7 +24,7 @@ Options: |
| 24 | 24 |
--constraint list Placement constraints (default []) |
| 25 | 25 |
--container-label list Container labels (default []) |
| 26 | 26 |
--dns list Set custom DNS servers (default []) |
| 27 |
- --dns-options list Set DNS options (default []) |
|
| 27 |
+ --dns-option list Set DNS options (default []) |
|
| 28 | 28 |
--dns-search list Set custom DNS search domains (default []) |
| 29 | 29 |
--endpoint-mode string Endpoint mode (vip or dnsrr) |
| 30 | 30 |
-e, --env list Set environment variables (default []) |
| ... | ... |
@@ -26,12 +26,12 @@ Options: |
| 26 | 26 |
--constraint-rm list Remove a constraint (default []) |
| 27 | 27 |
--container-label-add list Add or update a container label (default []) |
| 28 | 28 |
--container-label-rm list Remove a container label by its key (default []) |
| 29 |
- --dns-add list Add or update custom DNS servers (default []) |
|
| 30 |
- --dns-options-add list Add or update DNS options (default []) |
|
| 31 |
- --dns-options-rm list Remove DNS options (default []) |
|
| 32 |
- --dns-rm list Remove custom DNS servers (default []) |
|
| 33 |
- --dns-search-add list Add or update custom DNS search domains (default []) |
|
| 34 |
- --dns-search-rm list Remove DNS search domains (default []) |
|
| 29 |
+ --dns-add list Add or update a custom DNS server (default []) |
|
| 30 |
+ --dns-option-add list Add or update a DNS option (default []) |
|
| 31 |
+ --dns-option-rm list Remove a DNS option (default []) |
|
| 32 |
+ --dns-rm list Remove a custom DNS server (default []) |
|
| 33 |
+ --dns-search-add list Add or update a custom DNS search domain (default []) |
|
| 34 |
+ --dns-search-rm list Remove a DNS search domain (default []) |
|
| 35 | 35 |
--endpoint-mode string Endpoint mode (vip or dnsrr) |
| 36 | 36 |
--env-add list Add or update an environment variable (default []) |
| 37 | 37 |
--env-rm list Remove an environment variable (default []) |
| ... | ... |
@@ -388,7 +388,7 @@ network mode a container has its own UTS namespace by default. As such |
| 388 | 388 |
`--hostname` is allowed in `host` network mode and will only change the |
| 389 | 389 |
hostname inside the container. |
| 390 | 390 |
Similar to `--hostname`, the `--add-host`, `--dns`, `--dns-search`, and |
| 391 |
-`--dns-opt` options can be used in `host` network mode. These options update |
|
| 391 |
+`--dns-option` options can be used in `host` network mode. These options update |
|
| 392 | 392 |
`/etc/hosts` or `/etc/resolv.conf` inside the container. No change are made to |
| 393 | 393 |
`/etc/hosts` and `/etc/resolv.conf` on the host. |
| 394 | 394 |
|
| ... | ... |
@@ -407,7 +407,7 @@ or a High Performance Web Server. |
| 407 | 407 |
With the network set to `container` a container will share the |
| 408 | 408 |
network stack of another container. The other container's name must be |
| 409 | 409 |
provided in the format of `--network container:<name|id>`. Note that `--add-host` |
| 410 |
-`--hostname` `--dns` `--dns-search` `--dns-opt` and `--mac-address` are |
|
| 410 |
+`--hostname` `--dns` `--dns-search` `--dns-option` and `--mac-address` are |
|
| 411 | 411 |
invalid in `container` netmode, and `--publish` `--publish-all` `--expose` are |
| 412 | 412 |
also invalid in `container` netmode. |
| 413 | 413 |
|
| ... | ... |
@@ -811,7 +811,7 @@ func (s *DockerSwarmSuite) TestDNSConfig(c *check.C) {
|
| 811 | 811 |
|
| 812 | 812 |
// Create a service |
| 813 | 813 |
name := "top" |
| 814 |
- _, err := d.Cmd("service", "create", "--name", name, "--dns=1.2.3.4", "--dns-search=example.com", "--dns-options=timeout:3", "busybox", "top")
|
|
| 814 |
+ _, err := d.Cmd("service", "create", "--name", name, "--dns=1.2.3.4", "--dns-search=example.com", "--dns-option=timeout:3", "busybox", "top")
|
|
| 815 | 815 |
c.Assert(err, checker.IsNil) |
| 816 | 816 |
|
| 817 | 817 |
// Make sure task has been deployed. |
| ... | ... |
@@ -844,7 +844,7 @@ func (s *DockerSwarmSuite) TestDNSConfigUpdate(c *check.C) {
|
| 844 | 844 |
// Make sure task has been deployed. |
| 845 | 845 |
waitAndAssert(c, defaultReconciliationTimeout, d.checkActiveContainerCount, checker.Equals, 1) |
| 846 | 846 |
|
| 847 |
- _, err = d.Cmd("service", "update", "--dns-add=1.2.3.4", "--dns-search-add=example.com", "--dns-options-add=timeout:3", name)
|
|
| 847 |
+ _, err = d.Cmd("service", "update", "--dns-add=1.2.3.4", "--dns-search-add=example.com", "--dns-option-add=timeout:3", name)
|
|
| 848 | 848 |
c.Assert(err, checker.IsNil) |
| 849 | 849 |
|
| 850 | 850 |
out, err := d.Cmd("service", "inspect", "--format", "{{ .Spec.TaskTemplate.ContainerSpec.DNSConfig }}", name)
|
| ... | ... |
@@ -31,7 +31,7 @@ docker-create - Create a new container |
| 31 | 31 |
[**--device-write-iops**[=*[]*]] |
| 32 | 32 |
[**--dns**[=*[]*]] |
| 33 | 33 |
[**--dns-search**[=*[]*]] |
| 34 |
-[**--dns-opt**[=*[]*]] |
|
| 34 |
+[**--dns-option**[=*[]*]] |
|
| 35 | 35 |
[**-e**|**--env**[=*[]*]] |
| 36 | 36 |
[**--entrypoint**[=*ENTRYPOINT*]] |
| 37 | 37 |
[**--env-file**[=*[]*]] |
| ... | ... |
@@ -190,7 +190,7 @@ two memory nodes. |
| 190 | 190 |
**--dns**=[] |
| 191 | 191 |
Set custom DNS servers |
| 192 | 192 |
|
| 193 |
-**--dns-opt**=[] |
|
| 193 |
+**--dns-option**=[] |
|
| 194 | 194 |
Set custom DNS options |
| 195 | 195 |
|
| 196 | 196 |
**--dns-search**=[] |
| ... | ... |
@@ -32,7 +32,7 @@ docker-run - Run a command in a new container |
| 32 | 32 |
[**--device-write-bps**[=*[]*]] |
| 33 | 33 |
[**--device-write-iops**[=*[]*]] |
| 34 | 34 |
[**--dns**[=*[]*]] |
| 35 |
-[**--dns-opt**[=*[]*]] |
|
| 35 |
+[**--dns-option**[=*[]*]] |
|
| 36 | 36 |
[**--dns-search**[=*[]*]] |
| 37 | 37 |
[**-e**|**--env**[=*[]*]] |
| 38 | 38 |
[**--entrypoint**[=*ENTRYPOINT*]] |
| ... | ... |
@@ -260,7 +260,7 @@ See **config-json(5)** for documentation on using a configuration file. |
| 260 | 260 |
**--dns-search**=[] |
| 261 | 261 |
Set custom DNS search domains (Use --dns-search=. if you don't wish to set the search domain) |
| 262 | 262 |
|
| 263 |
-**--dns-opt**=[] |
|
| 263 |
+**--dns-option**=[] |
|
| 264 | 264 |
Set custom DNS options |
| 265 | 265 |
|
| 266 | 266 |
**--dns**=[] |
| ... | ... |
@@ -187,7 +187,11 @@ func AddFlags(flags *pflag.FlagSet) *ContainerOptions {
|
| 187 | 187 |
// Network and port publishing flag |
| 188 | 188 |
flags.Var(&copts.extraHosts, "add-host", "Add a custom host-to-IP mapping (host:ip)") |
| 189 | 189 |
flags.Var(&copts.dns, "dns", "Set custom DNS servers") |
| 190 |
+ // We allow for both "--dns-opt" and "--dns-option", although the latter is the recommended way. |
|
| 191 |
+ // This is to be consistent with service create/update |
|
| 190 | 192 |
flags.Var(&copts.dnsOptions, "dns-opt", "Set DNS options") |
| 193 |
+ flags.Var(&copts.dnsOptions, "dns-option", "Set DNS options") |
|
| 194 |
+ flags.MarkHidden("dns-opt")
|
|
| 191 | 195 |
flags.Var(&copts.dnsSearch, "dns-search", "Set custom DNS search domains") |
| 192 | 196 |
flags.Var(&copts.expose, "expose", "Expose a port or a range of ports") |
| 193 | 197 |
flags.StringVar(&copts.ipv4Address, "ip", "", "Container IPv4 address (e.g. 172.30.100.104)") |