Merge pull request #1753 from wking/do-not-require-bind-mount-type
libcontainer/specconv/spec_linux: Support empty 'type' for bind mounts
This commit is contained in:
commit
d56f6cc202
|
@ -269,13 +269,17 @@ func CreateLibcontainerConfig(opts *CreateOpts) (*configs.Config, error) {
|
||||||
func createLibcontainerMount(cwd string, m specs.Mount) *configs.Mount {
|
func createLibcontainerMount(cwd string, m specs.Mount) *configs.Mount {
|
||||||
flags, pgflags, data, ext := parseMountOptions(m.Options)
|
flags, pgflags, data, ext := parseMountOptions(m.Options)
|
||||||
source := m.Source
|
source := m.Source
|
||||||
if m.Type == "bind" {
|
device := m.Type
|
||||||
|
if flags|unix.MS_BIND != 0 {
|
||||||
|
if device == "" {
|
||||||
|
device = "bind"
|
||||||
|
}
|
||||||
if !filepath.IsAbs(source) {
|
if !filepath.IsAbs(source) {
|
||||||
source = filepath.Join(cwd, m.Source)
|
source = filepath.Join(cwd, m.Source)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return &configs.Mount{
|
return &configs.Mount{
|
||||||
Device: m.Type,
|
Device: device,
|
||||||
Source: source,
|
Source: source,
|
||||||
Destination: m.Destination,
|
Destination: m.Destination,
|
||||||
Data: data,
|
Data: data,
|
||||||
|
|
|
@ -44,7 +44,7 @@ func (ns *notifySocket) Close() error {
|
||||||
// If systemd is supporting sd_notify protocol, this function will add support
|
// If systemd is supporting sd_notify protocol, this function will add support
|
||||||
// for sd_notify protocol from within the container.
|
// for sd_notify protocol from within the container.
|
||||||
func (s *notifySocket) setupSpec(context *cli.Context, spec *specs.Spec) {
|
func (s *notifySocket) setupSpec(context *cli.Context, spec *specs.Spec) {
|
||||||
mount := specs.Mount{Destination: s.host, Type: "bind", Source: s.socketPath, Options: []string{"bind"}}
|
mount := specs.Mount{Destination: s.host, Source: s.socketPath, Options: []string{"bind"}}
|
||||||
spec.Mounts = append(spec.Mounts, mount)
|
spec.Mounts = append(spec.Mounts, mount)
|
||||||
spec.Process.Env = append(spec.Process.Env, fmt.Sprintf("NOTIFY_SOCKET=%s", s.host))
|
spec.Process.Env = append(spec.Process.Env, fmt.Sprintf("NOTIFY_SOCKET=%s", s.host))
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
#!/usr/bin/env bats
|
||||||
|
|
||||||
|
load helpers
|
||||||
|
|
||||||
|
function setup() {
|
||||||
|
teardown_busybox
|
||||||
|
setup_busybox
|
||||||
|
}
|
||||||
|
|
||||||
|
function teardown() {
|
||||||
|
teardown_busybox
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "runc run [bind mount]" {
|
||||||
|
CONFIG=$(jq '.mounts |= . + [{"source": ".", "destination": "/tmp/bind", "options": ["bind"]}] | .process.args = ["ls", "/tmp/bind/config.json"]' config.json)
|
||||||
|
echo "${CONFIG}" >config.json
|
||||||
|
|
||||||
|
runc run test_bind_mount
|
||||||
|
[ "$status" -eq 0 ]
|
||||||
|
[[ "${lines[0]}" =~ '/tmp/bind/config.json' ]]
|
||||||
|
}
|
Loading…
Reference in New Issue