mirror of
https://github.com/containers/podman.git
synced 2025-06-06 06:44:53 +08:00
Host networking
Allow for the user to specify network=host|bridge. If network is not specified, the default will be bridge. While "none" is now a valid option, it is not included in this. Signed-off-by: baude <bbaude@redhat.com> Closes: #164 Approved by: rhatdan
This commit is contained in:
@ -324,7 +324,8 @@ var createFlags = []cli.Flag{
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "network",
|
||||
Usage: "Connect a container to a network (default 'default')",
|
||||
Usage: "Connect a container to a network",
|
||||
Value: "bridge",
|
||||
},
|
||||
cli.StringSliceFlag{
|
||||
Name: "network-alias",
|
||||
|
@ -73,15 +73,16 @@ func addPidNS(config *createConfig, g *generate.Generator) error {
|
||||
func addNetNS(config *createConfig, g *generate.Generator) error {
|
||||
netMode := config.NetMode
|
||||
if netMode.IsHost() {
|
||||
logrus.Debug("Using host netmode")
|
||||
return g.RemoveLinuxNamespace(libpod.NetNamespace)
|
||||
}
|
||||
if netMode.IsNone() {
|
||||
return libpod.ErrNotImplemented
|
||||
}
|
||||
if netMode.IsBridge() {
|
||||
return libpod.ErrNotImplemented
|
||||
}
|
||||
if netMode.IsContainer() {
|
||||
} else if netMode.IsNone() {
|
||||
logrus.Debug("Using none netmode")
|
||||
return nil
|
||||
} else if netMode.IsBridge() {
|
||||
logrus.Debug("Using bridge netmode")
|
||||
return nil
|
||||
} else if netMode.IsContainer() {
|
||||
logrus.Debug("Using container netmode")
|
||||
ctr, err := config.Runtime.LookupContainer(netMode.ConnectedContainer())
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "container %q not found", netMode.ConnectedContainer())
|
||||
@ -94,6 +95,8 @@ func addNetNS(config *createConfig, g *generate.Generator) error {
|
||||
if err := g.AddOrReplaceLinuxNamespace(libpod.NetNamespace, nsPath); err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
return errors.Errorf("unknown network mode")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@ -556,8 +559,9 @@ func (c *createConfig) GetContainerCreateOptions() ([]libpod.CtrCreateOption, er
|
||||
options = append(options, libpod.WithName(c.Name))
|
||||
}
|
||||
// TODO parse ports into libpod format and include
|
||||
// TODO should not happen if --net=host
|
||||
options = append(options, libpod.WithNetNS([]ocicni.PortMapping{}))
|
||||
if !c.NetMode.IsHost() {
|
||||
options = append(options, libpod.WithNetNS([]ocicni.PortMapping{}))
|
||||
}
|
||||
options = append(options, libpod.WithStopSignal(c.StopSignal))
|
||||
options = append(options, libpod.WithStopTimeout(c.StopTimeout))
|
||||
return options, nil
|
||||
|
23
test/podman_networking.bats
Normal file
23
test/podman_networking.bats
Normal file
@ -0,0 +1,23 @@
|
||||
#!/usr/bin/env bats
|
||||
|
||||
load helpers
|
||||
|
||||
function teardown() {
|
||||
cleanup_test
|
||||
}
|
||||
|
||||
function setup() {
|
||||
copy_images
|
||||
}
|
||||
|
||||
@test "test network connection with default bridge" {
|
||||
run ${KPOD_BINARY} ${KPOD_OPTIONS} run -dt ${ALPINE} wget www.yahoo.com
|
||||
echo "$output"
|
||||
[ "$status" -eq 0 ]
|
||||
}
|
||||
|
||||
@test "test network connection with host" {
|
||||
run ${KPOD_BINARY} ${KPOD_OPTIONS} run -dt --network host ${ALPINE} wget www.yahoo.com
|
||||
echo "$output"
|
||||
[ "$status" -eq 0 ]
|
||||
}
|
Reference in New Issue
Block a user