Using an SDN

Using a software defined network

DC/OS provides each container with its own IP address by allowing you to run containers on a wide variety of IP-based virtual networks. In order to run containers on a virtual network, you must install a CNI or CNM network out-of-band. DC/OS itself comes with its own virtual networking solution called DC/OS Overlay, which the you can use to provide containers with unique IP addresses.

Using Virtual Networks

First, you must configure the virtual networks. Virtual networks are configured at install time. You must specify a canonical name for each network in the config.yaml. When your service needs to launch a container, refer to it by that canonical name. To use a virtual network in a Marathon app definition, specify the "network": "USER" property along with an ipAddress field in the form: {"ipAddress": {"network": "$MYNETWORK"}}. The value of $MYNETWORK is the canonical name of the network.

Example

The following Marathon application definition specifies a network named dcos-1, which refers to the target DC/OS virtual network of the same name.

{
   "id":"my-networking",
   "cmd":"env; ip -o addr; sleep 30",
   "cpus":0.10,
   "mem":64,
   "instances":1,
   "backoffFactor":1.14472988585,
   "backoffSeconds":5,
   "ipAddress":{
      "networkName":"dcos-1"
   },
   "container":{
      "type":"DOCKER",
      "docker":{
         "network":"USER",
         "image":"busybox",
         "portMappings":[
            {
               "containerPort":123,
               "servicePort":80,
               "name":"foo"
            }
         ]
      }
   }
}

Learn more about ports and networking in Marathon.