mirror of
https://github.com/containers/podman.git
synced 2025-05-22 17:46:52 +08:00
new "image" mount type
Add a new "image" mount type to `--mount`. The source of the mount is the name or ID of an image. The destination is the path inside the container. Image mounts further support an optional `rw,readwrite` parameter which if set to "true" will yield the mount writable inside the container. Note that no changes are propagated to the image mount on the host (which in any case is read only). Mounts are overlay mounts. To support read-only overlay mounts, vendor a non-release version of Buildah. Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
This commit is contained in:
78
vendor/github.com/fsouza/go-dockerclient/container_create.go
generated
vendored
Normal file
78
vendor/github.com/fsouza/go-dockerclient/container_create.go
generated
vendored
Normal file
@ -0,0 +1,78 @@
|
||||
package docker
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"net/http"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// ErrContainerAlreadyExists is the error returned by CreateContainer when the
|
||||
// container already exists.
|
||||
var ErrContainerAlreadyExists = errors.New("container already exists")
|
||||
|
||||
// CreateContainerOptions specify parameters to the CreateContainer function.
|
||||
//
|
||||
// See https://goo.gl/tyzwVM for more details.
|
||||
type CreateContainerOptions struct {
|
||||
Name string
|
||||
Config *Config `qs:"-"`
|
||||
HostConfig *HostConfig `qs:"-"`
|
||||
NetworkingConfig *NetworkingConfig `qs:"-"`
|
||||
Context context.Context
|
||||
}
|
||||
|
||||
// CreateContainer creates a new container, returning the container instance,
|
||||
// or an error in case of failure.
|
||||
//
|
||||
// The returned container instance contains only the container ID. To get more
|
||||
// details about the container after creating it, use InspectContainer.
|
||||
//
|
||||
// See https://goo.gl/tyzwVM for more details.
|
||||
func (c *Client) CreateContainer(opts CreateContainerOptions) (*Container, error) {
|
||||
path := "/containers/create?" + queryString(opts)
|
||||
resp, err := c.do(
|
||||
http.MethodPost,
|
||||
path,
|
||||
doOptions{
|
||||
data: struct {
|
||||
*Config
|
||||
HostConfig *HostConfig `json:"HostConfig,omitempty" yaml:"HostConfig,omitempty" toml:"HostConfig,omitempty"`
|
||||
NetworkingConfig *NetworkingConfig `json:"NetworkingConfig,omitempty" yaml:"NetworkingConfig,omitempty" toml:"NetworkingConfig,omitempty"`
|
||||
}{
|
||||
opts.Config,
|
||||
opts.HostConfig,
|
||||
opts.NetworkingConfig,
|
||||
},
|
||||
context: opts.Context,
|
||||
},
|
||||
)
|
||||
|
||||
if e, ok := err.(*Error); ok {
|
||||
if e.Status == http.StatusNotFound && strings.Contains(e.Message, "No such image") {
|
||||
return nil, ErrNoSuchImage
|
||||
}
|
||||
if e.Status == http.StatusConflict {
|
||||
return nil, ErrContainerAlreadyExists
|
||||
}
|
||||
// Workaround for 17.09 bug returning 400 instead of 409.
|
||||
// See https://github.com/moby/moby/issues/35021
|
||||
if e.Status == http.StatusBadRequest && strings.Contains(e.Message, "Conflict.") {
|
||||
return nil, ErrContainerAlreadyExists
|
||||
}
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
var container Container
|
||||
if err := json.NewDecoder(resp.Body).Decode(&container); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
container.Name = opts.Name
|
||||
|
||||
return &container, nil
|
||||
}
|
Reference in New Issue
Block a user