make weave and the proxy work with tcp-only dockers via DOCKER_HOST
This commit is contained in:
1 parent
0afc3db383
commit
f28ad350bd
3 files changed
+27
-5
No files matched your search
@@ -2,6 +2,8 @@ package docker
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"strings"
|
||||
|
||||
"github.com/fsouza/go-dockerclient"
|
||||
|
||||
. "github.com/weaveworks/weave/common"
|
||||
@@ -19,6 +21,9 @@ type Client struct {
|
||||
|
||||
// NewClient creates a new Docker client and checks we can talk to Docker
|
||||
func NewClient(apiPath string) (*Client, error) {
|
||||
if apiPath != "" && !strings.Contains(apiPath, "://") {
|
||||
apiPath = "tcp://" + apiPath
|
||||
}
|
||||
dc, err := docker.NewClient(apiPath)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -29,6 +34,9 @@ func NewClient(apiPath string) (*Client, error) {
|
||||
}
|
||||
|
||||
func NewVersionedClient(apiPath string, apiVersionString string) (*Client, error) {
|
||||
if !strings.Contains(apiPath, "://") {
|
||||
apiPath = "tcp://" + apiPath
|
||||
}
|
||||
dc, err := docker.NewVersionedClient(apiPath, apiVersionString)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
+7
-1
@@ -70,8 +70,14 @@ func main() {
|
||||
iface *net.Interface
|
||||
datapathName string
|
||||
trustedSubnetStr string
|
||||
|
||||
defaultDockerHost = "unix:///var/run/docker.sock"
|
||||
)
|
||||
|
||||
if val := os.Getenv("DOCKER_HOST"); val != "" {
|
||||
defaultDockerHost = val
|
||||
}
|
||||
|
||||
mflag.BoolVar(&justVersion, []string{"#version", "-version"}, false, "print version and exit")
|
||||
mflag.BoolVar(&createDatapath, []string{"-create-datapath"}, false, "create ODP datapath and exit")
|
||||
mflag.BoolVar(&deleteDatapath, []string{"-delete-datapath"}, false, "delete ODP datapath and exit")
|
||||
@@ -93,7 +99,7 @@ func main() {
|
||||
mflag.StringVar(&iprangeCIDR, []string{"#iprange", "#-iprange", "-ipalloc-range"}, "", "IP address range reserved for automatic allocation, in CIDR notation")
|
||||
mflag.StringVar(&ipsubnetCIDR, []string{"#ipsubnet", "#-ipsubnet", "-ipalloc-default-subnet"}, "", "subnet to allocate within by default, in CIDR notation")
|
||||
mflag.IntVar(&peerCount, []string{"#initpeercount", "#-initpeercount", "-init-peer-count"}, 0, "number of peers in network (for IP address allocation)")
|
||||
mflag.StringVar(&dockerAPI, []string{"#api", "#-api", "-docker-api"}, "", "Docker API endpoint, e.g. unix:///var/run/docker.sock")
|
||||
mflag.StringVar(&dockerAPI, []string{"#api", "#-api", "-docker-api"}, defaultDockerHost, "Docker API endpoint")
|
||||
mflag.BoolVar(&noDNS, []string{"-no-dns"}, false, "disable DNS server")
|
||||
mflag.StringVar(&dnsDomain, []string{"-dns-domain"}, nameserver.DefaultDomain, "local domain to server requests for")
|
||||
mflag.StringVar(&dnsListenAddress, []string{"-dns-listen-address"}, nameserver.DefaultListenAddress, "address to listen on for DNS requests")
|
||||
|
||||
@@ -97,15 +97,19 @@ usage() {
|
||||
}
|
||||
|
||||
docker_sock() {
|
||||
if [ -z "$DOCKER_HOST" ]; then
|
||||
echo "/var/run/docker.sock"
|
||||
return
|
||||
fi
|
||||
if echo "$DOCKER_HOST" | grep -q "^unix://" >/dev/null; then
|
||||
echo "${DOCKER_HOST#unix://}"
|
||||
else
|
||||
echo "/var/run/docker.sock"
|
||||
fi
|
||||
}
|
||||
|
||||
docker_sock_volume_mount() {
|
||||
echo "-v $(docker_sock):$(docker_sock) -e DOCKER_HOST=unix://$(docker_sock)"
|
||||
if [ -n "$(docker_sock)" ]; then
|
||||
echo "-v $(docker_sock):$(docker_sock)"
|
||||
fi
|
||||
}
|
||||
|
||||
exec_remote() {
|
||||
@@ -125,6 +129,7 @@ exec_remote() {
|
||||
-e WEAVE_NO_FASTDP \
|
||||
-e WEAVE_NO_BRIDGED_FASTDP \
|
||||
-e WEAVE_NO_PLUGIN \
|
||||
-e DOCKER_HOST \
|
||||
-e DOCKER_BRIDGE \
|
||||
-e DOCKER_CLIENT_HOST="$DOCKER_CLIENT_HOST" \
|
||||
-e DOCKER_CLIENT_ARGS \
|
||||
@@ -1624,6 +1629,7 @@ launch_router() {
|
||||
$(docker_sock_volume_mount) \
|
||||
-p $PORT:$CONTAINER_PORT/tcp -p $PORT:$CONTAINER_PORT/udp \
|
||||
${NETHOST_OPT:-$DNS_PORT_MAPPING} \
|
||||
-e DOCKER_HOST \
|
||||
-e WEAVE_PASSWORD \
|
||||
-e WEAVE_CIDR=none \
|
||||
$WEAVE_DOCKER_ARGS $IMAGE $COVERAGE_ARGS \
|
||||
@@ -1633,7 +1639,7 @@ launch_router() {
|
||||
--dns-effective-listen-address $DOCKER_BRIDGE_IP \
|
||||
${NETHOST_OPT:+$DNS_ROUTER_OPTS} $NO_DNS_OPT \
|
||||
--http-addr $HTTP_IP:$HTTP_PORT \
|
||||
--docker-api "unix://$(docker_sock)" "$@")
|
||||
"$@")
|
||||
with_container_netns_or_die $CONTAINER_NAME setup_router_iface_$BRIDGE_TYPE
|
||||
attach_router
|
||||
}
|
||||
@@ -1683,6 +1689,7 @@ launch_proxy() {
|
||||
-v /proc:/hostproc \
|
||||
-e PROCFS=/hostproc \
|
||||
-e WEAVE_CIDR=none \
|
||||
-e DOCKER_HOST \
|
||||
-e DOCKER_BRIDGE \
|
||||
-e WEAVE_DEBUG \
|
||||
-e COVERAGE \
|
||||
@@ -1703,6 +1710,7 @@ launch_plugin() {
|
||||
--net=host \
|
||||
$(docker_sock_volume_mount) \
|
||||
-v /run/docker/plugins:/run/docker/plugins \
|
||||
-e DOCKER_HOST \
|
||||
$PLUGIN_IMAGE "$@")
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user