| ... | ... |
@@ -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 |
+} |