mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
4736b17315
Signed-off-by: Dave Tucker <dt@docker.com> Signed-off-by: Madhu Venugopal <madhu@docker.com>
114 lines
4.8 KiB
Markdown
114 lines
4.8 KiB
Markdown
# Experimental: Networking and Services
|
|
|
|
In this feature:
|
|
|
|
- `network` and `service` become a first class objects in the Docker UI
|
|
- You can create networks and attach containers to them
|
|
- We introduce the concept of `services`
|
|
- This is an entry-point in to a given network that is also published via Service Discovery
|
|
|
|
This is an experimental feature. For information on installing and using experimental features, see [the experimental feature overview](experimental.md).
|
|
|
|
## Using Networks
|
|
|
|
Usage: docker network [OPTIONS] COMMAND [OPTIONS] [arg...]
|
|
|
|
Commands:
|
|
create Create a network
|
|
rm Remove a network
|
|
ls List all networks
|
|
info Display information of a network
|
|
|
|
Run 'docker network COMMAND --help' for more information on a command.
|
|
|
|
--help=false Print usage
|
|
|
|
The `docker network` command is used to manage Networks.
|
|
|
|
To create a network, `docker network create foo`. You can also specify a driver
|
|
if you have loaded a networking plugin e.g `docker network create -d <plugin_name> foo`
|
|
|
|
$ docker network create foo
|
|
aae601f43744bc1f57c515a16c8c7c4989a2cad577978a32e6910b799a6bccf6
|
|
$ docker network create -d overlay bar
|
|
d9989793e2f5fe400a58ef77f706d03f668219688ee989ea68ea78b990fa2406
|
|
|
|
`docker network ls` is used to display the currently configured networks
|
|
|
|
$ docker network ls
|
|
NETWORK ID NAME TYPE
|
|
d367e613ff7f none null
|
|
bd61375b6993 host host
|
|
cc455abccfeb bridge bridge
|
|
aae601f43744 foo bridge
|
|
d9989793e2f5 bar overlay
|
|
|
|
To get detailed information on a network, you can use the `docker network info`
|
|
command.
|
|
|
|
$ docker network info foo
|
|
Network Id: aae601f43744bc1f57c515a16c8c7c4989a2cad577978a32e6910b799a6bccf6
|
|
Name: foo
|
|
Type: null
|
|
|
|
If you no longer have need of a network, you can delete it with `docker network rm`
|
|
|
|
$ docker network rm bar
|
|
bar
|
|
$ docker network ls
|
|
NETWORK ID NAME TYPE
|
|
aae601f43744 foo bridge
|
|
d367e613ff7f none null
|
|
bd61375b6993 host host
|
|
cc455abccfeb bridge bridge
|
|
|
|
Docker daemon supports a configuration flag `--default-network` which takes configuration value of format `NETWORK:DRIVER`, where,
|
|
`NETWORK` is the name of the network created using the `docker network create` command and
|
|
`DRIVER` represents the in-built drivers such as bridge, overlay, container, host and none. or Remote drivers via Network Plugins.
|
|
When a container is created and if the network mode (`--net`) is not specified, then this default network will be used to connect
|
|
the container. If `--default-network` is not specified, the default network will be the `bridge` driver.
|
|
|
|
## Using Services
|
|
|
|
Usage: docker service COMMAND [OPTIONS] [arg...]
|
|
|
|
Commands:
|
|
publish Publish a service
|
|
unpublish Remove a service
|
|
attach Attach a backend (container) to the service
|
|
detach Detach the backend from the service
|
|
ls Lists all services
|
|
info Display information about a service
|
|
|
|
Run 'docker service COMMAND --help' for more information on a command.
|
|
|
|
--help=false Print usage
|
|
|
|
Assuming we want to publish a service from container `a0ebc12d3e48` on network `foo` as `my-service` we would use the following command:
|
|
|
|
$ docker service publish my-service.foo
|
|
ec56fd74717d00f968c26675c9a77707e49ae64b8e54832ebf78888eb116e428
|
|
$ docker service attach a0ebc12d3e48 my-service.foo
|
|
|
|
This would make the container `a0ebc12d3e48` accessible as `my-service` on network `foo`. Any other container in network `foo` can use DNS to resolve the address of `my-service`
|
|
|
|
This can also be acheived by using the `--publish-service` flag for `docker run`:
|
|
|
|
docker run -itd --publish-service db.foo postgres
|
|
|
|
`db.foo` in this instance means "place the container on network `foo`, and allow other hosts on `foo` to discover it under the name `db`"
|
|
|
|
We can see the current services using the `docker service ls` command
|
|
|
|
$ docker service ls
|
|
SERVICE ID NAME NETWORK PROVIDER
|
|
ec56fd74717d my-service foo a0ebc12d3e48
|
|
|
|
To remove the a service:
|
|
|
|
$ docker service detach a0ebc12d3e48 my-service.foo
|
|
$ docker service unpublish my-service.foo
|
|
|
|
Send us feedback and comments on [#](https://github.com/docker/docker/issues/?),
|
|
or on the usual Google Groups (docker-user, docker-dev) and IRC channels.
|
|
|