add domainname support

This commit is contained in:
Victor Vieux 2013-08-29 22:21:32 +00:00
parent 49b5c44ee9
commit 0a436e03b8
2 changed files with 23 additions and 7 deletions

View File

@ -11,6 +11,7 @@ import (
"io" "io"
"io/ioutil" "io/ioutil"
"log" "log"
"net"
"os" "os"
"os/exec" "os/exec"
"path" "path"
@ -20,7 +21,6 @@ import (
"strings" "strings"
"syscall" "syscall"
"time" "time"
"net"
) )
type Container struct { type Container struct {
@ -61,6 +61,7 @@ type Container struct {
type Config struct { type Config struct {
Hostname string Hostname string
Domainname string
User string User string
Memory int64 // Memory limit (in bytes) Memory int64 // Memory limit (in bytes)
MemorySwap int64 // Total memory usage (memory + swap); set `-1' to disable swap MemorySwap int64 // Total memory usage (memory + swap); set `-1' to disable swap
@ -203,8 +204,17 @@ func ParseRun(args []string, capabilities *Capabilities) (*Config, *HostConfig,
return nil, nil, cmd, err return nil, nil, cmd, err
} }
hostname := *flHostname
domainname := ""
parts := strings.SplitN(hostname, ".", 2)
if len(parts) > 1 {
hostname = parts[0]
domainname = parts[1]
}
config := &Config{ config := &Config{
Hostname: *flHostname, Hostname: hostname,
Domainname: domainname,
PortSpecs: flPorts, PortSpecs: flPorts,
User: *flUser, User: *flUser,
Tty: *flTty, Tty: *flTty,
@ -692,6 +702,9 @@ func (container *Container) Start(hostConfig *HostConfig) error {
params = append(params, "-e", "TERM=xterm") params = append(params, "-e", "TERM=xterm")
} }
params = append(params, "-h", container.Config.Hostname)
params = append(params, "-d", container.Config.Domainname)
// Setup environment // Setup environment
params = append(params, params = append(params,
"-e", "HOME=/", "-e", "HOME=/",
@ -827,10 +840,10 @@ func (container *Container) allocateNetwork() error {
portSpecs = container.Config.PortSpecs portSpecs = container.Config.PortSpecs
} else { } else {
for backend, frontend := range container.NetworkSettings.PortMapping["Tcp"] { for backend, frontend := range container.NetworkSettings.PortMapping["Tcp"] {
portSpecs = append(portSpecs, fmt.Sprintf("%s:%s/tcp",frontend, backend)) portSpecs = append(portSpecs, fmt.Sprintf("%s:%s/tcp", frontend, backend))
} }
for backend, frontend := range container.NetworkSettings.PortMapping["Udp"] { for backend, frontend := range container.NetworkSettings.PortMapping["Udp"] {
portSpecs = append(portSpecs, fmt.Sprintf("%s:%s/udp",frontend, backend)) portSpecs = append(portSpecs, fmt.Sprintf("%s:%s/udp", frontend, backend))
} }
} }

View File

@ -4,6 +4,7 @@ import (
"flag" "flag"
"fmt" "fmt"
"github.com/dotcloud/docker/utils" "github.com/dotcloud/docker/utils"
"io/ioutil"
"log" "log"
"os" "os"
"os/exec" "os/exec"
@ -92,7 +93,8 @@ func SysInit() {
var u = flag.String("u", "", "username or uid") var u = flag.String("u", "", "username or uid")
var gw = flag.String("g", "", "gateway address") var gw = flag.String("g", "", "gateway address")
var workdir = flag.String("w", "", "workdir") var workdir = flag.String("w", "", "workdir")
var hostname = flag.String("h", "", "hostname")
var domainname = flag.String("d", "", "domainname")
var flEnv ListOpts var flEnv ListOpts
flag.Var(&flEnv, "e", "Set environment variables") flag.Var(&flEnv, "e", "Set environment variables")
@ -101,6 +103,7 @@ func SysInit() {
cleanupEnv(flEnv) cleanupEnv(flEnv)
setupNetworking(*gw) setupNetworking(*gw)
setupWorkingDirectory(*workdir) setupWorkingDirectory(*workdir)
setupHostname(*hostname, *domainname)
changeUser(*u) changeUser(*u)
executeProgram(flag.Arg(0), flag.Args()) executeProgram(flag.Arg(0), flag.Args())
} }