1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

Merge pull request #3234 from creack/default_unix_path

Default unix path
This commit is contained in:
Andy Rothfusz 2013-12-17 16:24:01 -08:00
commit 1acefac97e
4 changed files with 45 additions and 14 deletions

View file

@ -12,7 +12,7 @@ To list available commands, either run ``docker`` with no parameters or execute
$ sudo docker $ sudo docker
Usage: docker [OPTIONS] COMMAND [arg...] Usage: docker [OPTIONS] COMMAND [arg...]
-H=[unix:///var/run/docker.sock]: tcp://host:port to bind/connect to or unix://path/to/socket to use -H=[unix:///var/run/docker.sock]: tcp://[host[:port]] to bind/connect to or unix://[/path/to/socket] to use. When host=[0.0.0.0], port=[4243] or path=[/var/run/docker.sock] is omitted, default values are used.
A self-sufficient runtime for linux containers. A self-sufficient runtime for linux containers.
@ -27,7 +27,7 @@ To list available commands, either run ``docker`` with no parameters or execute
Usage of docker: Usage of docker:
-D=false: Enable debug mode -D=false: Enable debug mode
-H=[unix:///var/run/docker.sock]: Multiple tcp://host:port or unix://path/to/socket to bind in daemon mode, single connection otherwise -H=[unix:///var/run/docker.sock]: tcp://[host[:port]] to bind or unix://[/path/to/socket] to use. When host=[0.0.0.0], port=[4243] or path=[/var/run/docker.sock] is omitted, default values are used.
-api-enable-cors=false: Enable CORS headers in the remote API -api-enable-cors=false: Enable CORS headers in the remote API
-b="": Attach containers to a pre-existing network bridge; use 'none' to disable container networking -b="": Attach containers to a pre-existing network bridge; use 'none' to disable container networking
-bip="": Use the provided CIDR notation address for the dynamically created bridge (docker0); Mutually exclusive of -b -bip="": Use the provided CIDR notation address for the dynamically created bridge (docker0); Mutually exclusive of -b

View file

@ -129,7 +129,7 @@ func ValidateEnv(val string) (string, error) {
} }
func ValidateHost(val string) (string, error) { func ValidateHost(val string) (string, error) {
host, err := utils.ParseHost(DEFAULTHTTPHOST, DEFAULTHTTPPORT, val) host, err := utils.ParseHost(DEFAULTHTTPHOST, DEFAULTHTTPPORT, DEFAULTUNIXSOCKET, val)
if err != nil { if err != nil {
return val, err return val, err
} }

View file

@ -776,11 +776,21 @@ func GetNameserversAsCIDR(resolvConf []byte) []string {
return nameservers return nameservers
} }
func ParseHost(host string, port int, addr string) (string, error) { // FIXME: Change this not to receive default value as parameter
var proto string func ParseHost(defaultHost string, defaultPort int, defaultUnix, addr string) (string, error) {
var (
proto string
host string
port int
)
switch { switch {
case strings.HasPrefix(addr, "unix://"): case strings.HasPrefix(addr, "unix://"):
return addr, nil proto = "unix"
addr = strings.TrimPrefix(addr, "unix://")
if addr == "" {
addr = defaultUnix
}
case strings.HasPrefix(addr, "tcp://"): case strings.HasPrefix(addr, "tcp://"):
proto = "tcp" proto = "tcp"
addr = strings.TrimPrefix(addr, "tcp://") addr = strings.TrimPrefix(addr, "tcp://")
@ -791,19 +801,29 @@ func ParseHost(host string, port int, addr string) (string, error) {
proto = "tcp" proto = "tcp"
} }
if strings.Contains(addr, ":") { if proto != "unix" && strings.Contains(addr, ":") {
hostParts := strings.Split(addr, ":") hostParts := strings.Split(addr, ":")
if len(hostParts) != 2 { if len(hostParts) != 2 {
return "", fmt.Errorf("Invalid bind address format: %s", addr) return "", fmt.Errorf("Invalid bind address format: %s", addr)
} }
if hostParts[0] != "" { if hostParts[0] != "" {
host = hostParts[0] host = hostParts[0]
} else {
host = defaultHost
} }
if p, err := strconv.Atoi(hostParts[1]); err == nil {
if p, err := strconv.Atoi(hostParts[1]); err == nil && p != 0 {
port = p port = p
} else {
port = defaultPort
} }
} else { } else {
host = addr host = addr
port = defaultPort
}
if proto == "unix" {
return fmt.Sprintf("%s://%s", proto, host), nil
} }
return fmt.Sprintf("%s://%s:%d", proto, host, port), nil return fmt.Sprintf("%s://%s:%d", proto, host, port), nil
} }

View file

@ -299,22 +299,33 @@ func assertRAMInBytes(t *testing.T, size string, expectError bool, expectedBytes
} }
func TestParseHost(t *testing.T) { func TestParseHost(t *testing.T) {
if addr, err := ParseHost("127.0.0.1", 4243, "0.0.0.0"); err != nil || addr != "tcp://0.0.0.0:4243" { var (
defaultHttpHost = "127.0.0.1"
defaultHttpPort = 4243
defaultUnix = "/var/run/docker.sock"
)
if addr, err := ParseHost(defaultHttpHost, defaultHttpPort, defaultUnix, "0.0.0.0"); err != nil || addr != "tcp://0.0.0.0:4243" {
t.Errorf("0.0.0.0 -> expected tcp://0.0.0.0:4243, got %s", addr) t.Errorf("0.0.0.0 -> expected tcp://0.0.0.0:4243, got %s", addr)
} }
if addr, err := ParseHost("127.0.0.1", 4243, "0.0.0.1:5555"); err != nil || addr != "tcp://0.0.0.1:5555" { if addr, err := ParseHost(defaultHttpHost, defaultHttpPort, defaultUnix, "0.0.0.1:5555"); err != nil || addr != "tcp://0.0.0.1:5555" {
t.Errorf("0.0.0.1:5555 -> expected tcp://0.0.0.1:5555, got %s", addr) t.Errorf("0.0.0.1:5555 -> expected tcp://0.0.0.1:5555, got %s", addr)
} }
if addr, err := ParseHost("127.0.0.1", 4243, ":6666"); err != nil || addr != "tcp://127.0.0.1:6666" { if addr, err := ParseHost(defaultHttpHost, defaultHttpPort, defaultUnix, ":6666"); err != nil || addr != "tcp://127.0.0.1:6666" {
t.Errorf(":6666 -> expected tcp://127.0.0.1:6666, got %s", addr) t.Errorf(":6666 -> expected tcp://127.0.0.1:6666, got %s", addr)
} }
if addr, err := ParseHost("127.0.0.1", 4243, "tcp://:7777"); err != nil || addr != "tcp://127.0.0.1:7777" { if addr, err := ParseHost(defaultHttpHost, defaultHttpPort, defaultUnix, "tcp://:7777"); err != nil || addr != "tcp://127.0.0.1:7777" {
t.Errorf("tcp://:7777 -> expected tcp://127.0.0.1:7777, got %s", addr) t.Errorf("tcp://:7777 -> expected tcp://127.0.0.1:7777, got %s", addr)
} }
if addr, err := ParseHost("127.0.0.1", 4243, "unix:///var/run/docker.sock"); err != nil || addr != "unix:///var/run/docker.sock" { if addr, err := ParseHost(defaultHttpHost, defaultHttpPort, defaultUnix, "unix:///var/run/docker.sock"); err != nil || addr != "unix:///var/run/docker.sock" {
t.Errorf("unix:///var/run/docker.sock -> expected unix:///var/run/docker.sock, got %s", addr) t.Errorf("unix:///var/run/docker.sock -> expected unix:///var/run/docker.sock, got %s", addr)
} }
if addr, err := ParseHost("127.0.0.1", 4243, "udp://127.0.0.1"); err == nil { if addr, err := ParseHost(defaultHttpHost, defaultHttpPort, defaultUnix, "unix://"); err != nil || addr != "unix:///var/run/docker.sock" {
t.Errorf("unix:///var/run/docker.sock -> expected unix:///var/run/docker.sock, got %s", addr)
}
if addr, err := ParseHost(defaultHttpHost, defaultHttpPort, defaultUnix, "udp://127.0.0.1"); err == nil {
t.Errorf("udp protocol address expected error return, but err == nil. Got %s", addr)
}
if addr, err := ParseHost(defaultHttpHost, defaultHttpPort, defaultUnix, "udp://127.0.0.1:4243"); err == nil {
t.Errorf("udp protocol address expected error return, but err == nil. Got %s", addr) t.Errorf("udp protocol address expected error return, but err == nil. Got %s", addr)
} }
} }