`Mounts` allows users to specify in a much safer way the volumes they
want to use in the container.
This replaces `Binds` and `Volumes`, which both still exist, but
`Mounts` and `Binds`/`Volumes` are exclussive.
The CLI will continue to use `Binds` and `Volumes` due to concerns with
parsing the volume specs on the client side and cross-platform support
(for now).
The new API follows exactly the services mount API.
Example usage of `Mounts`:
```
$ curl -XPOST localhost:2375/containers/create -d '{
"Image": "alpine:latest",
"HostConfig": {
"Mounts": [{
"Type": "Volume",
"Target": "/foo"
},{
"Type": "bind",
"Source": "/var/run/docker.sock",
"Target": "/var/run/docker.sock",
},{
"Type": "volume",
"Name": "important_data",
"Target": "/var/data",
"ReadOnly": true,
"VolumeOptions": {
"DriverConfig": {
Name: "awesomeStorage",
Options: {"size": "10m"},
Labels: {"some":"label"}
}
}]
}
}'
```
There are currently 2 types of mounts:
- **bind**: Paths on the host that get mounted into the
container. Paths must exist prior to creating the container.
- **volume**: Volumes that persist after the
container is removed.
Not all fields are available in each type, and validation is done to
ensure these fields aren't mixed up between types.
Signed-off-by: Brian Goff <cpuguy83@gmail.com>
Upstream-commit: fc7b904dced4d18d49c8a6c47ae3f415d16d0c43
Component: engine
47 lines
3.4 KiB
Go
47 lines
3.4 KiB
Go
package runconfig
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/docker/docker/errors"
|
|
)
|
|
|
|
var (
|
|
// ErrConflictContainerNetworkAndLinks conflict between --net=container and links
|
|
ErrConflictContainerNetworkAndLinks = fmt.Errorf("Conflicting options: container type network can't be used with links. This would result in undefined behavior")
|
|
// ErrConflictUserDefinedNetworkAndLinks conflict between --net=<NETWORK> and links
|
|
ErrConflictUserDefinedNetworkAndLinks = fmt.Errorf("Conflicting options: networking can't be used with links. This would result in undefined behavior")
|
|
// ErrConflictSharedNetwork conflict between private and other networks
|
|
ErrConflictSharedNetwork = fmt.Errorf("Container sharing network namespace with another container or host cannot be connected to any other network")
|
|
// ErrConflictHostNetwork conflict from being disconnected from host network or connected to host network.
|
|
ErrConflictHostNetwork = fmt.Errorf("Container cannot be disconnected from host network or connected to host network")
|
|
// ErrConflictNoNetwork conflict between private and other networks
|
|
ErrConflictNoNetwork = fmt.Errorf("Container cannot be connected to multiple networks with one of the networks in private (none) mode")
|
|
// ErrConflictNetworkAndDNS conflict between --dns and the network mode
|
|
ErrConflictNetworkAndDNS = fmt.Errorf("Conflicting options: dns and the network mode")
|
|
// ErrConflictNetworkHostname conflict between the hostname and the network mode
|
|
ErrConflictNetworkHostname = fmt.Errorf("Conflicting options: hostname and the network mode")
|
|
// ErrConflictHostNetworkAndLinks conflict between --net=host and links
|
|
ErrConflictHostNetworkAndLinks = fmt.Errorf("Conflicting options: host type networking can't be used with links. This would result in undefined behavior")
|
|
// ErrConflictContainerNetworkAndMac conflict between the mac address and the network mode
|
|
ErrConflictContainerNetworkAndMac = fmt.Errorf("Conflicting options: mac-address and the network mode")
|
|
// ErrConflictNetworkHosts conflict between add-host and the network mode
|
|
ErrConflictNetworkHosts = fmt.Errorf("Conflicting options: custom host-to-IP mapping and the network mode")
|
|
// ErrConflictNetworkPublishPorts conflict between the publish options and the network mode
|
|
ErrConflictNetworkPublishPorts = fmt.Errorf("Conflicting options: port publishing and the container type network mode")
|
|
// ErrConflictNetworkExposePorts conflict between the expose option and the network mode
|
|
ErrConflictNetworkExposePorts = fmt.Errorf("Conflicting options: port exposing and the container type network mode")
|
|
// ErrUnsupportedNetworkAndIP conflict between network mode and requested ip address
|
|
ErrUnsupportedNetworkAndIP = fmt.Errorf("User specified IP address is supported on user defined networks only")
|
|
// ErrUnsupportedNetworkNoSubnetAndIP conflict between network with no configured subnet and requested ip address
|
|
ErrUnsupportedNetworkNoSubnetAndIP = fmt.Errorf("User specified IP address is supported only when connecting to networks with user configured subnets")
|
|
// ErrUnsupportedNetworkAndAlias conflict between network mode and alias
|
|
ErrUnsupportedNetworkAndAlias = fmt.Errorf("Network-scoped alias is supported only for containers in user defined networks")
|
|
// ErrConflictUTSHostname conflict between the hostname and the UTS mode
|
|
ErrConflictUTSHostname = fmt.Errorf("Conflicting options: hostname and the UTS mode")
|
|
)
|
|
|
|
func conflictError(err error) error {
|
|
return errors.NewRequestConflictError(err)
|
|
}
|