Browse code

Merge pull request #13440 from LK4D4/fix_bridge_none

Fix network with -b none

Arnaud Porterie authored on 2015/05/27 06:08:21
Showing 3 changed files
... ...
@@ -182,17 +182,20 @@ func getDevicesFromPath(deviceMapping runconfig.DeviceMapping) (devs []*configs.
182 182
 }
183 183
 
184 184
 func populateCommand(c *Container, env []string) error {
185
-	en := &execdriver.Network{
186
-		NamespacePath: c.NetworkSettings.SandboxKey,
187
-	}
185
+	var en *execdriver.Network
186
+	if !c.daemon.config.DisableNetwork {
187
+		en = &execdriver.Network{
188
+			NamespacePath: c.NetworkSettings.SandboxKey,
189
+		}
188 190
 
189
-	parts := strings.SplitN(string(c.hostConfig.NetworkMode), ":", 2)
190
-	if parts[0] == "container" {
191
-		nc, err := c.getNetworkedContainer()
192
-		if err != nil {
193
-			return err
191
+		parts := strings.SplitN(string(c.hostConfig.NetworkMode), ":", 2)
192
+		if parts[0] == "container" {
193
+			nc, err := c.getNetworkedContainer()
194
+			if err != nil {
195
+				return err
196
+			}
197
+			en.ContainerID = nc.ID
194 198
 		}
195
-		en.ContainerID = nc.ID
196 199
 	}
197 200
 
198 201
 	ipc := &execdriver.Ipc{}
... ...
@@ -906,7 +909,7 @@ func (container *Container) getNetworkedContainer() (*Container, error) {
906 906
 }
907 907
 
908 908
 func (container *Container) ReleaseNetwork() {
909
-	if container.hostConfig.NetworkMode.IsContainer() {
909
+	if container.hostConfig.NetworkMode.IsContainer() || container.daemon.config.DisableNetwork {
910 910
 		return
911 911
 	}
912 912
 
... ...
@@ -89,6 +89,9 @@ func generateIfaceName() (string, error) {
89 89
 }
90 90
 
91 91
 func (d *driver) createNetwork(container *configs.Config, c *execdriver.Command) error {
92
+	if c.Network == nil {
93
+		return nil
94
+	}
92 95
 	if c.Network.ContainerID != "" {
93 96
 		d.Lock()
94 97
 		active := d.activeContainers[c.Network.ContainerID]
... ...
@@ -1156,3 +1156,12 @@ func (s *DockerDaemonSuite) TestCleanupMountsAfterCrash(c *check.C) {
1156 1156
 	c.Assert(err, check.IsNil, check.Commentf("Output: %s", mountOut))
1157 1157
 	c.Assert(strings.Contains(string(mountOut), id), check.Equals, false, check.Commentf("Something mounted from older daemon start: %s", mountOut))
1158 1158
 }
1159
+
1160
+func (s *DockerDaemonSuite) TestRunContainerWithBridgeNone(c *check.C) {
1161
+	c.Assert(s.d.StartWithBusybox("-b", "none"), check.IsNil)
1162
+
1163
+	out, err := s.d.Cmd("run", "--rm", "busybox", "ip", "l")
1164
+	c.Assert(err, check.IsNil, check.Commentf("Output: %s", out))
1165
+	c.Assert(strings.Contains(out, "eth0"), check.Equals, false,
1166
+		check.Commentf("There shouldn't be eth0 in container when network is disabled: %s", out))
1167
+}